Avatar billede webcreator Nybegynder
25. juni 2003 - 19:25 Der er 28 kommentarer og
1 løsning

Mærkeligt problem med IF sætning

Hej.

Det er endnu engang en IF sætning, der driller mig. Utroligt så ofte jeg ser mig blind på den slags.

if ($code == $pass AND $auto == "on") {
setCookie("e-study_auth", "$user|$pass", time()+60*60*24*365*2);
# header("location: index.php?2=2");
echo "Cookie created using auto!";
} elseif ($code == $pass AND $auto == "") {
$_SESSION[loginuser] = $user;
$_SESSION[loginpass] = $pass;
# header("location: index.php?1=1");
echo "Sessions created (without auto..)!";
} else {
header("location: logiin.php?uds=<div class=a1>Forkert brugernavn eller adgangskode</div>");
}

Til at starte med, er både $code, $pass og $auto tomme. Derfor må den automatisk oprette de 2 sessions. Men hvis jeg starter med at give $code en værdi, så acceptere den alligevel betingelserne i ifelse'en.
Avatar billede jakoba Nybegynder
25. juni 2003 - 19:38 #1
hvis $auto er tom vil  $auto == "on"  ikke være sand; og så kommer du ikke ind i den if-sætning
Avatar billede webcreator Nybegynder
25. juni 2003 - 19:39 #2
Nej, men så burde den da hoppe til elseif'en

(kom til at skrive ifelse i mit spm. fejl)
Avatar billede webcreator Nybegynder
25. juni 2003 - 19:44 #3
Sagen er jo, at hvis auto-login er slået til, så skal der oprettes en cookie. Ellers fortsættes der via sessions.
Avatar billede whatever Nybegynder
25. juni 2003 - 19:44 #4
Det ville nok være en god idé at urlencode dette:

<div class=a1>Forkert brugernavn eller adgangskode</div
Avatar billede jakoba Nybegynder
25. juni 2003 - 19:49 #5
lad mig kikke  (jeg starter (som sædvanlig) med at lave ordentlige indrykninger):

if ($code == $pass AND $auto == "on") {
    setCookie("e-study_auth", "$user|$pass", time()+60*60*24*365*2);
    # header("location: index.php?2=2");
    echo "Cookie created using auto!";
} elseif ($code == $pass AND $auto == "") {
    $_SESSION[loginuser] = $user;
    $_SESSION[loginpass] = $pass;
    # header("location: index.php?1=1");
    echo "Sessions created (without auto..)!";
} else {
    header("location: logiin.php?uds=<div class=a1>Forkert brugernavn eller adgangskode</div>");
}

Øh hvad er de de # tegn til?
kommentarer er enten
  //  frem til enden af linien
eller
  /*  slutter når det kommer et  */

mvh JakobA
Avatar billede webcreator Nybegynder
25. juni 2003 - 19:51 #6
Nej, # kan også bruges til kommentare :)
Avatar billede webcreator Nybegynder
25. juni 2003 - 19:51 #7
whatever > Encode det ? Hvordan det ? fordele ?
Avatar billede jakoba Nybegynder
25. juni 2003 - 19:53 #8
Ja søreme.  'shell style comment'.  akkeja.
Avatar billede webcreator Nybegynder
25. juni 2003 - 19:55 #9
:-)

Men tilbage til spm. Kan I se nogen fejl ? Har jeg ikke ret i, at den burde hoppe videre til else-if'en, og efterfølgende hoppe videre til else'en, da betingelserne i else-if'en heller ikke holder.
Avatar billede whatever Nybegynder
25. juni 2003 - 19:59 #10
Når du urlencoder en streng, bliver specielle tegn lavet om til nogle koder, så du er sikker på at browseren ikke går bananas over dem, når de sendes med i adressen.

Du urlencoder en streng ved at skrive:

urlencode ("<div class=a1>Forkert brugernavn eller adgangskode</div");

se http://dk.php.net/manual/en/function.urlencode.php
Avatar billede webcreator Nybegynder
25. juni 2003 - 20:06 #11
Fejl fundet.

$user = 1;
$pass = 2;
$code = 4;

$user = $_REQUEST["user"];
$pass = $_REQUEST["pass"];
$auto = $_REQUEST["auto"];

I starten fylder jeg noget i mine variabler. Men disse bliver tømt, når user, pass osv. bliver requested nedenfor. Forstår ikke hvorfor. Hvis der ikke er noget i $_REQUEST["pass"], hvorfor så overskrive en eksisterende ?
Avatar billede whatever Nybegynder
25. juni 2003 - 20:10 #12
Du kunne jo så skrive:

$user = 1;
$pass = 2;
$code = 4;

$user = ($_REQUEST["user"]) ? $_REQUEST["user"] : $user;
$pass = ($_REQUEST["pass"]) ? $_REQUEST["pass"] : $pass;
$auto = ($_REQUEST["auto"]) ? $_REQUEST["auto"] : $auto;
Avatar billede whatever Nybegynder
25. juni 2003 - 20:11 #13
Så checkes der om $_REQUEST['user'] indeholder en værdi, hvis ja så $user lig med denne værdi. Ellers sættes $user lig med værdien af $user.
Avatar billede webcreator Nybegynder
25. juni 2003 - 20:11 #14
Hvad sker der så ? Bliver variablerne i starten brugt, hvis der ikke er data at hente ?
Avatar billede webcreator Nybegynder
25. juni 2003 - 20:13 #15
Ok, smart.
Jeg gjorde det dog på en anden måde.
Jeg smed et skjult felt i min form, som bliver requested i toppen. Efterfølgende tjekker jeg så i IF'en, om værdien af denne variabel er YES. Hvis ikke, så sker der ikke noget. Hvis ja, så tjekkes der for password osv.
Avatar billede webcreator Nybegynder
25. juni 2003 - 20:23 #16
Jeg synes I skal smide nogle points. I har være yderst behjælpelige :-)
Avatar billede webcreator Nybegynder
25. juni 2003 - 20:25 #17
Whatever > Virker ikke helt :
    header("location: urlencode("index.php?2=2");");

Synes nu også det ser mærkeligt ud :-)
Kan du ikke give et rigtigt eksempel med header osv ?
Avatar billede whatever Nybegynder
25. juni 2003 - 20:25 #18
Fedt nok må vi give nogle point væk?

Jeg smider et svar istedet.
Avatar billede whatever Nybegynder
25. juni 2003 - 20:27 #19
Det er kun indeholdet af variablen du skal encode.



header("location: logiin.php?uds=".urlencode("<div class=a1>Forkert brugernavn eller adgangskode</div>")."");
Avatar billede webcreator Nybegynder
25. juni 2003 - 20:32 #20
Ok du må give points væk ? Ja da, høh :-)
Avatar billede webcreator Nybegynder
25. juni 2003 - 20:35 #21
wow, og resultatet er, at man ikke kan se indholdet i variablen ? Jeg kan nemlig ikke se noget :-)
Avatar billede webcreator Nybegynder
25. juni 2003 - 20:37 #22
... indholdet i variablen ?
Der skulle stå : .. indholdet i URL'en ?
Avatar billede whatever Nybegynder
25. juni 2003 - 20:37 #23
Du burde kunne se noget, men det vil se lidt mærkeligt ud.

Du skrev længere oppe:

"Jeg synes I skal smide nogle points."
Avatar billede whatever Nybegynder
25. juni 2003 - 20:39 #24
nu er uds en variabel, dvs. at div class=a1>Forkert brugernavn eller adgangskode</div> er indholdet i variablen :-)
Avatar billede webcreator Nybegynder
25. juni 2003 - 20:41 #25
LOL, mente selvfølgelig svar :-)
Hold op - må være mangel på søvn :-D
Avatar billede whatever Nybegynder
25. juni 2003 - 20:44 #26
he he he
Avatar billede webcreator Nybegynder
25. juni 2003 - 20:46 #27
Men meningen er altså, at indholdet ikke bliver vist i URL'en, ikke ?
Avatar billede whatever Nybegynder
25. juni 2003 - 20:50 #28
Avatar billede webcreator Nybegynder
25. juni 2003 - 20:54 #29
Tak for hjælpen :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester