[php] redirect werkt niet

Pagina: 1
Acties:

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Ik heb twee bestanden, te weten test.php en doLogin.php.

test.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
  @$SessionID = $HTTP_COOKIE_VARS["UID"];
  if ($SessionID)  {
    // controleer sessionID
    echo "Cookie UID was ingesteld";
  }
  else {
    echo "<form action=DoLogin.php method=post>";
    echo "<input name=User><input type=submit>";
    echo "<input type=hidden name=RequestedPage value=$REQUEST_URI>";
    echo "</form>";
  }
?>

DoLogin.php
PHP:
1
2
3
4
5
6
7
8
9
<?
  // controleer logingegevens
  $LoginCorrect = TRUE;
  $a = $HTTP_POST_VARS["RequestedPage"];
  if($LoginCorrect) {
    setcookie("UID","123ABC");
    header("Location: $a");
  }
?>

Als ik op test.php op submit druk, dan kom ik uit op een pagina dat in de adresbalk 'dologin.php' heeft staan, maar dat het formpje van 'test.php' toont.
Naar mijn inzicht zou ik een lege pagina met de tekst "Cookie UID was ingesteld" moeten krijgen.
Om de een of andere reden komt 'ie bij de if statement uit in de else, alsof er nooit een cookie is ingesteld...

Ik gebruik opera als browser, maar IE vertoont dit gedrag ook.

Localhost, sweet localhost


Verwijderd

Op dinsdag 18 september 2001 23:06 schreef kvdveer het volgende:
Ik heb twee bestanden, te weten test.php en doLogin.php.

test.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
  @$SessionID = $HTTP_COOKIE_VARS["UID"];
  if ($SessionID)  {
    // controleer sessionID
    echo "Cookie UID was ingesteld";
  }
  else {
    echo "<form action=DoLogin.php method=post>";
    echo "<input name=User><input type=submit>";
    echo "<input type=hidden name=RequestedPage value=$REQUEST_URI>";
    echo "</form>";
  }
?>

DoLogin.php
PHP:
1
2
3
4
5
6
7
8
9
<?
  // controleer logingegevens
  $LoginCorrect = TRUE;
  $a = $HTTP_POST_VARS["RequestedPage"];
  if($LoginCorrect) {
    setcookie("UID","123ABC");
    header("Location: $a");
  }
?>

Als ik op test.php op submit druk, dan kom ik uit op een pagina dat in de adresbalk 'dologin.php' heeft staan, maar dat het formpje van 'test.php' toont.
Naar mijn inzicht zou ik een lege pagina met de tekst "Cookie UID was ingesteld" moeten krijgen.
Om de een of andere reden komt 'ie bij de if statement uit in de else, alsof er nooit een cookie is ingesteld...

Ik gebruik opera als browser, maar IE vertoont dit gedrag ook.
dat je nog in je adresbalk dologin.php hebt staan klopt, dat veranderd niet met het sturen van een location header in dit geval.
Dat er een formpje komt maakt wel duidelijk dat of het cookie niet bestaat of dat je hem verkeerd uitleest.

Haal die @ in @$SessionID = $HTTP_COOKIE_VARS["UID"];
eens weg.
en zet er eens onder:
echo "$SessionID <->";
echo $HTTP_COOKIE_VARS["UID"];

Dan kun je zien welke hij neerzet, als je alleen <--> ziet is je cookie niet gezet. Check dan eens met phpinfo() welke cookies er gezet zijn.

succes

  • sebas
  • Registratie: April 2000
  • Laatst online: 16-12-2025
Doe eens ipv. de loop gewoon echo $UID; dan zie je in ieder geval al of het cookie gezet is of niet.

Everyone complains of his memory, no one of his judgement.


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
ik denk dat je cookie niet is geset..

je bent namelijk nog een var vergeten check de manual, ik dacht dat er 3 verplichte argumenten waren voor setcookie.

edit: Sorry, dit is niet waar, ik heb het eventjes opgezocht en zo roep je hem aan:
int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

maar waarom het je die @ staat voor $sessionId=.... ?