Beste PHP-hulpers,

Ik ben enige tijd bezig met een gekocht profielensysteem wat verouderd is en dus op mijn nieuwe hosting niet meer werkt. Ik heb er aardig veel fouten uit kunnen halen door de foutmelding in google te zoeken en daar een oplossing voor te vinden.

Nu blijf ik met (vooralsnog) 2 pagina's zitten waar php foutmeldingen op weer gegeven worden.

Dat is de pagina die zegt: "U bent ingelogd, u word doorverwezen naar de hoofdpagina", deze bevat 1 foutmeldingen bovenaan maar die is niet zo storend daar heb ik zelf nog niet naar gekeken want je word wel gewoon ingelogd en doorverwezen.

Maar de ergste komt op de Profiel bewerking pagina als je dus ingelogd bent. Overigens kan je je profiel wel bewerken met succes maar met een pagina vol foutmeldingen.

De foutmelding luidt:
Warning: substr() expects parameter 3 to be long, string given in /home/vhosts/site/httpdocs/controllers/panel.php on line 316

Deze foutmelding staat een stuk of 20x bovenaan de pagina.

Lijn 316 in panel.php:
if(isset ($_POST['submit']) || $_SERVER['REQUEST_METHOD'] == 'post') {

En ik kom er maar niet uit via google. Bevat deze regel een makkelijk verouderd stukje code of ligt het aan meer dan alleen die regel?

Met vriendelijke groet,
Schryvers.
De lijn die je hier laat zien zorgt niet voor die foutmelding, je moet in je script opzoek gaan naar de functie substr en dan kijken wat voor waarde de 3e parameter heeft.
Verdacht stukje dan uit panel.php:

if(count ($sExplode) > 1) $this->r['tpl']->assign ("Wijzigen", "V".$sExplode[1], $this->r['functions']->strip ($this->r['user'][$key]));
else $this->r['tpl']->assign ("Wijzigen", "V".(substr (0, 5, $key) == 'extra_' ? substr (6, $key) : $key), $this->r['functions']->strip ($this->r['user'][$key]));

//$this->r['tpl']->assign ("Wijzigen", "V".(substr (0, 5, $key) == 'extra_' ? substr (6, $key) : $key), $this->r['functions']->strip ($this->r['user'][$key]));


Ben ik op de goede weg of moet ik verder buiten panel.php zoeken?
Dit is de definitie van substr (van php.net):

string substr ( string $string , int $start [, int $length ] )

De eerste parameter is dus de string waaruit je een deel knipt, de tweede is het start karakter, de derde hoeveel karakters je wilt knippen.

Als ik naar jou code kijk dan denk ik dat het vroeger blijkbaar iets anders was:
<?php
substr (0, 5, $key)
?>
Hier zal je waarschijnlijk van moeten maken:
<?php
substr($key, 0, 5)
?>
Alleen heb je ook
<?php
substr (6, $key)
?>
Daar is het niet 100% duidelijk wat nu die 6 betekent. Is dat de start, of is het het aantal karakters? Ik gok dat het het begin karakter is en dan wordt het
<?php
substr($key, 6)
?>
Ongelooflijk Erwin!

Vele malen dank!

Ik heb de code aangepast naar:
if(count ($sExplode) > 1) $this->r['tpl']->assign ("Wijzigen", "V".$sExplode[1], $this->r['functions']->strip ($this->r['user'][$key]));
else $this->r['tpl']->assign ("Wijzigen", "V".(substr ($key, 0, 5) == 'extra_' ? substr ($key, 6) : $key), $this->r['functions']->strip ($this->r['user'][$key]));

//$this->r['tpl']->assign ("Wijzigen", "V".(substr ($key, 0, 5) == 'extra_' ? substr ($key, 6) : $key), $this->r['functions']->strip ($this->r['user'][$key]));

En het werkt weer!

Echt hartstikke bedankt!

Reageren