Ik draai PHP 4.3.8 op mijn webserver (Apache 2.0.50). Dit werkte tot voor kort prima, maar de laatste dagen werken veel pagina's niet goed omdat de variablen die gebruikt worden niet verstuurd worden. Zo werkt de inlogpagina met textvelden 'username' en 'password' niet, omdat de inhoud ervan na het klikken op Inloggen niet doorgestuurd wordt. Ook als ik echo($iets); opvraag voor de url test.php?iets=iets levert dit niks op. Ik ben inmiddels al bezig om de meeste van deze variablen te veranderen in $_GET['...'], maar omdat er erg veel pagina's op mijn webserver staan heb ik liever een oplossing voor het probleem. Tussen de tijd dat het wel en niet werkte heb ik niks aan de configuratie van php aangepast, daarnaast heeft ook het verwijderen en opnieuw installeren van php (meerdere malen) niet gewerkt (ook php.ini verwijderd). Ik heb al op verschillende sites gekeken naar een oplossing, maar heb nog niks gevonden.
Lijkt toch wel sterk iets te maken te hebben met register_globals. Als je dat aanzet zou het weer kunnen werken (dan maakt het niet uit of je $iets of $_GET['iets'] gebruikt). Maar het wordt aangeraden om goed te programmeren en het uit te zetten
dit heeft te maken met je register_globals instellingen,
kijk maar op http://nl.php.net/register_globals
deze instellingen staan in php.ini, maar volgens mij moet je je apache server herstarten om de verandering door te voeren (mits je PHP als apache module hebt geïnstalleerd)
kijk maar op http://nl.php.net/register_globals
deze instellingen staan in php.ini, maar volgens mij moet je je apache server herstarten om de verandering door te voeren (mits je PHP als apache module hebt geïnstalleerd)
Hoewel ik dit normaal altijd op Off heb staan, werken de meeste pagina's nu wel weer. Alleen de pagina's die cookies gebruiken ($_COOKIE['...']) geven nog geen informatie terug, terwijl deze er wel is.
-- ik zie nu dat de cookies niet aangemaakt worden
-- Ik heb nog eens gekeken naar de set_cookie(); code, het valt me op dat de cookie wél aangemaakt wordt wanneer de set_cookie(); code BOVENIN het phpscript staat, maar niet wanneer hij op een andere plaats, in dit geval bij:
if(mysql_num_rows($query) == 1){
setcookie("username", '" . $username. "', time() + 99999999, "/");
}
Heeft dit ook met instellingen uit php.ini te maken, en zoja, welke?
-- ik heb nu de betreffende scripts bovenin de pagina's geplaatst, het inloggen werkt nu wel, alleen kan daarna de gebruikersnaam $_COOKIE['username'] niet meer opgevraagd worden. In de cookie zélf (de .txt dus) staat overigens wel de gebruikersnaam die ik opgegeven heb.
-- ik zie nu dat de cookies niet aangemaakt worden
-- Ik heb nog eens gekeken naar de set_cookie(); code, het valt me op dat de cookie wél aangemaakt wordt wanneer de set_cookie(); code BOVENIN het phpscript staat, maar niet wanneer hij op een andere plaats, in dit geval bij:
if(mysql_num_rows($query) == 1){
setcookie("username", '" . $username. "', time() + 99999999, "/");
}
Heeft dit ook met instellingen uit php.ini te maken, en zoja, welke?
-- ik heb nu de betreffende scripts bovenin de pagina's geplaatst, het inloggen werkt nu wel, alleen kan daarna de gebruikersnaam $_COOKIE['username'] niet meer opgevraagd worden. In de cookie zélf (de .txt dus) staat overigens wel de gebruikersnaam die ik opgegeven heb.
[ Voor 93% gewijzigd door Jannis op 26-07-2004 23:11 ]
begin eens met je error_reporting op E_ALL zetten, dan zal je waarschijnlijk al een hoop meer errormeldingen zien. Het kan ook zijn dat PHP errormeldingen naar je error_log van apache worden geschreven, kijk daar ook eens in.
Ik gok dat je al output stuurt voordat je je cookie aanmaakt, dat mag niet.
Ik gok dat je al output stuurt voordat je je cookie aanmaakt, dat mag niet.
Intentionally left blank
Ik zie in de Apache errorlog inderdaad errors staan die overeenkomen met de tijdstippen dat ik de betreffende pagina's bezoek, maar er staat niet specifiek dat ze van PHP afkomstig zijn:
[Tue Jul 27 00:15:48 2004] [error] [client 127.0.0.1] File does not exist: D:/Apache2/htdocs/jserver
Ik heb nu ingesteld in php.ini dat elke error weergeven wordt, op de plaatsen waar $_COOKIE['username'] opgevraagd wordt staat: Notice: Undefined index: username in <regelnummer en bestandsnaam>. Over het versturen: Ik heb een inlogfile login.php. Als de gebruiker op Inloggen klikt wordt dezelfde pagina door <form action='login.php' method='post'> geopend. login.php bevat de code if($_SERVER['REQUEST_METHOD'] == "POST"){ //inloggen }else{ //inlogveld }. als het formulier verzonden wordt, wordt gekeken of de gegevens in de db voorkomen, en zoja, dan wordt de cookie gemaakt. Vervolgens wordt index.php geladen, die controleerd of $_COOKIE['jnl_user'] bestaat:
jf($_COOKIE['jnl_user']){
...
}
(jnl_user is overigens de naam van de cookie die set_cookie() aanmaakt). Als er iets fout is in de volgorde waarop ik dit doe, hoor ik het graag...
[Tue Jul 27 00:15:48 2004] [error] [client 127.0.0.1] File does not exist: D:/Apache2/htdocs/jserver
Ik heb nu ingesteld in php.ini dat elke error weergeven wordt, op de plaatsen waar $_COOKIE['username'] opgevraagd wordt staat: Notice: Undefined index: username in <regelnummer en bestandsnaam>. Over het versturen: Ik heb een inlogfile login.php. Als de gebruiker op Inloggen klikt wordt dezelfde pagina door <form action='login.php' method='post'> geopend. login.php bevat de code if($_SERVER['REQUEST_METHOD'] == "POST"){ //inloggen }else{ //inlogveld }. als het formulier verzonden wordt, wordt gekeken of de gegevens in de db voorkomen, en zoja, dan wordt de cookie gemaakt. Vervolgens wordt index.php geladen, die controleerd of $_COOKIE['jnl_user'] bestaat:
jf($_COOKIE['jnl_user']){
...
}
(jnl_user is overigens de naam van de cookie die set_cookie() aanmaakt). Als er iets fout is in de volgorde waarop ik dit doe, hoor ik het graag...
Pagina: 1