aasahMedlem sedan mars 20034 471 inlägg Nu har jag ett intressant problem. Jag fattar som vanligt ingenting, men förhoppningsvis gör nån annan det.... :l
Jag har två filer som använder sessionsvariabler. Den ena login.php loggar in, den andra my.php kräver att man är inloggad. Själva inloggningen fungerar, så länge jag loggar in och ut och hoppar mellan dessa två filer rakt upp och ner är det grönt.
Men... om man anländer till my.php utan att vara inloggad så händer följande:
if (!isIn()) {
header("Location: login.php?go=cp");
}
Då hamnar man i login och URL:n är login.php?go=cp som den borde vara. Sedan loggar jag in, då körs en funktion i login som kollar att allt är OK, man finns i db:n osv, och sätter sessionsvariabler om allt är grönt, sedan kommer man till följande:
if (wasChosenGET("go", "cp")) header("Location: my.php");
else header("Location: message.php?mess=Successfully logged in!");
//där funktionen är
function wasChosenGET($name, $val) {
return (isSet($_GET["$name"]) && $_GET["$name"] == $val);
}
Som URL:n ser ut borde jag hamna i my tycker jag.
Men det gör jag inte!!! Jag hamnar i message!?!?!? :q VARFÖR?
Däremot fungerar följande: om jag går till login med URL:n
login.php?go=out så blir jag utloggad - på följande kod:
if (isIn() && wasChosenGET("go", "out")) {
logout(); }
Var är skillnaden??? :q :x
RED: Rättade parentesfel
MatteMedlem sedan aug. 20002 975 inlägg Du går till login.php?go=cp.
Där får du upp ett inloggningsformulär.
När du postar detta formulär är det den URL du har i din action som skickas.
Finns inte go=cp i din action kommer skriptet du postar till sedan att gå till message.
Du måste alltså via dina GET-variabler styra adressen i action.
aasahMedlem sedan mars 20034 471 inlägg Ååååh! Så fast att det ser ut så här:
$me = $_SERVER['PHP_SELF'];
<form method="POST" name="LoginForm" action="$me" >
Så följer inte GET-variablerna med? :q Stämmer det?
Tydligen... just testat.
TACK, Matte! Tusen tack! :birp
tydalMedlem sedan juni 20034 013 inlägg Det enkla sättet att kolla upp om det stämmer är ju att titta i sidans html-kod i webbläsaren. Eller att skriva echo($me); i koden.
GET-variablerna finns i $_SERVER['QUERY_STRING']
MatteMedlem sedan aug. 20002 975 inlägg
aasah skrev:
Så följer inte GET-variablerna med? :q Stämmer det?
Nej, det gör de inte.
Om du har REQUEST_URI på din server kan du skriva:
$me = $_SERVER['REQUEST_URI'];
Annars får du som tydal säger skriva:
$me = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
aasahMedlem sedan mars 20034 471 inlägg
Matte skrev:
...Om du har REQUEST_URI på din server kan du skriva:
$me = $_SERVER['REQUEST_URI'];
Annars får du som tydal säger skriva:
$me = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
Smart. :) Bra att veta i framtiden. Löste det simpelt nu eftersom det bara är go som kan sättas med tillägget:
if (isSet($_GET["go"])) $me .= "?go=".$_GET["go"];
Tack än en gång! :) Glömde uppdatera tråden så ursprungliga tacket är högre upp...