10. oktober 2010 - 12:11
Der er
28 kommentarer og 1 løsning
Login samt videresendes med session.
Hej. Jeg ønsker at få min login-ok.php til at overføre session til test.php - men den kommer enten med fejl på test.php eller også viser den evt tekst uanset session. Hvad gør jeg galt? -----Login-ok.php <?php session_start(); //Åben sessionen $_SESSION['brugernavn'] = "brugernavn"; $_SESSION['password'] = "password"; ?> <?php // PHP script start. require("config.php"); $login = &$HTTP_POST_VARS['login']; if(empty($login)) { echo 'Denne side kræver login adgang'; } else { $brugernavn = &$HTTP_POST_VARS['brugernavn']; $password = &$HTTP_POST_VARS['password']; if(empty($brugernavn) OR empty($password)) { echo 'Et af felterne er tomme'; } else { // Denne klamme starter alt script der udføres HVIS begge felter er udfyldte. mysql_connect($mysql_host, $mysql_user, $mysql_pw); mysql_select_db($mysql_db); $result_user = mysql_query("select brugernavn from dennis_brugere where brugernavn = '$brugernavn'") or die (mysql_error()); $result_pw = mysql_query("select password from dennis_brugere where password = '$password'") or die (mysql_error()); $array_user = mysql_fetch_array($result_user); $array_pw = mysql_fetch_array($result_pw); if($array_user['brugernavn'] == $brugernavn AND $array_pw['password'] == $password) { echo 'korrekt password'; } else { echo 'forkert password'; } } } ?> <br /> <br /> <a href="test.php">test</a> ------test.php <?php session_start(); //Åben sessionen $_SESSION['brugernavn'] = "brugernavn"; $_SESSION['password'] = "password"; ?> <? if $_SESSION['brugernavn'] == "brugernavn"; and $_SESSION['password'] == "password"; echo "bum"; else die (mysql_error); ?>
Annonceindlæg fra Jobindex
10. oktober 2010 - 12:19
#1
Du siger, at den giver en fejlbesked, og de er jo til for at hjælpe med at rette fejl, så skriv kopier den lige herind. ;)
Jeg vil dog vove at påstå, at:
if $_SESSION['brugernavn'] == "brugernavn"; and $_SESSION['password'] == "password";
skal være:
if ($_SESSION['brugernavn'] == "brugernavn" && $_SESSION['password'] == "password")
10. oktober 2010 - 12:20
#2
test.php bliver således:
<?php session_start(); //Åben sessionen $_SESSION['brugernavn'] = "brugernavn"; $_SESSION['password'] = "password"; if ($_SESSION['brugernavn'] == "brugernavn" && $_SESSION['password'] == "password") { echo "bum"; } else { die (mysql_error); } ?>
10. oktober 2010 - 12:38
#3
Ja sorry :P Gik lidt stærkt, da jeg irriterer mig på denne fejl :P PT får jeg fejlen på test.php Parse error: syntax error, unexpected T_ELSE in /customers/sanded.dk/sanded.dk/httpd.www/phptestdennisny/test.php on line 16 og jeg skulle da mene at else også skal være der?
10. oktober 2010 - 12:41
#4
Arh, else stod forkert. fejl løst. Men hvorfor kan jeg nu bare gå direkte til min test.php og stadig se ordet bum? Jeg skal kun have lov til at se BUM, når mit login er korrekt og session er ok. ellers skal den lukkes ned og evt bede om at blive login igen.
10. oktober 2010 - 12:53
#5
Først sætter du:
$_SESSION['brugernavn'] = "brugernavn"; $_SESSION['password'] = "password";
og derefter tester du med en if, om de er sat til "brugernavn" og "password". Det er de selvfølgelig, når du lige har sat dem. =)
10. oktober 2010 - 13:00
#6
Jamen er det ikke det jeg har gjort da? :) Jeg vil jo ikke have at man skal kunne se BUM, hvis du ikke er logget ind? Ellers tror jeg vidst ikke rigtig jeg forstår hvad du mener :).
10. oktober 2010 - 13:02
#7
For hvis jeg lukker alt ned, og åbner direkte i test.php - så viser den forsat BUM :(
10. oktober 2010 - 14:34
#8
Anyone? :)
10. oktober 2010 - 14:43
#9
Den kan stadig godt have en gemt sessions cookie bare fordi du lukker ned. Prøv at lave delete.php <?php session_destroy(); ?> og så åben test.php igen
10. oktober 2010 - 15:24
#10
Det er det samme :( Den echo'er bare BUM uanset. Men kan jeg komme udenom det på nogen anden måde? For jeg vil jo have at et login skal gælde på den næste side - dvs jeg vil feks gerne have en database på en anden side, hvor jeg kan gemme ting i, men hvor login er påkrævet til at kunne se denne formel/database.
10. oktober 2010 - 15:27
#11
Kom lige til at se på koden igen.. Du sætter de to sessions på siden, og så ser du om de rent faktisk er det de sætter dem til. Det vil de A L T I D være. Siden vil altid sige BUM, så fjern der hvor du sætter dem.
10. oktober 2010 - 16:09
#12
Tak Kentora! :) Smid et svar. Men en sidste ting, hvornår skal jeg så bruge de to sætninger? for på utallige sider læser jeg at man skal bruge $_session for at trække det man vil, ud. og i dette tilfælge vil jeg jo trække bruger samt password ud, for at sikre mig at personen er logget ind? :)
10. oktober 2010 - 16:12
#13
Det er også rigtig nok, men det du gjorde der var at sætte en variabel, og så tjekke om den var sat til det du bad den om. Det var det samme w13 sagde, og han var først, så synes han skal have point. :)
10. oktober 2010 - 16:19
#14
Nåe ok sorry. Må have misforstået w13. :) smid da et svar w13 :). Jeg er ikke helt hardcore til php endnu, men kæmper en brag kamp for at lære det.
10. oktober 2010 - 17:44
#15
Her er et svar! :) Godt du fik det klaret. Og det skal nok komme, det med PHP. Det er jo sådan, man lærer det!
10. oktober 2010 - 17:44
#16
- og så et svar! ;)
10. oktober 2010 - 17:51
#17
Dejligt i gutter gider hjælpe :) lige et sidste spørgsmål :P (elsker at udnytte jeres viden) :P Men når jeg laver en die (mysql_error); Kan jeg så ikke få noget andet tekst at vise end mysql_error - det virker lidt... grimt at have stående ved manglende input. :) bare hvis i lige havde en hurtig en til højre benet :)
10. oktober 2010 - 17:54
#18
Jo, du erstatter simpelthen bare:
die (mysql_error);
med fx.:
echo "Brugernavn eller password var inkorrekt. Prøv igen!";
Bemærk at du ikke kan bruge almindelige anførelsestegn inde i din echo-besked, da du jo så lukker tekststrengen. Derfor skal anførelsestegn enten være skrevet som \" eller endnu rigtigere som ".
Og tak for point! :)
10. oktober 2010 - 17:57
#19
Det med anførelsestegn skal jeg måske lige uddybe..
Dette er forkert og vil give fejl:
echo "Brugernavn eller password var "inkorrekt". Prøv igen!";
Dette er korrekt:
echo "Brugernavn eller password var "inkorrekt". Prøv igen!";
:)
10. oktober 2010 - 18:00
#20
Jamen det har jeg netop prøvet, men så hvis jeg taster den korrekte kode ind ... og manuelt selv retter adressen til ...../test.php så kan jeg komme ind uanset om jeg har tastet rigtig i bruger og password. Ved at bruge die (mysql_error); så er jeg sikker på at man ikke kan snyde php ved at gøre sådan. :(
10. oktober 2010 - 18:02
#21
eh, hvis jeg taster en forkert kode ind ******** sorry. jeg kan komme ind uanset hvad jeg næsten gør, så længe jeg bare tilretter adressen linjen til ...../test.php og det skal man på ingen måde have lov til :) ved die mysq.... så virker det som jeg ønsker :)
10. oktober 2010 - 18:24
#22
Hvad mener du med, at du kan "komme ind"? Ser du "BUM", for det burde du virkelig ikke. Hvis du ikke ser "BUM", så er du vel heller ikke "inde". :)
10. oktober 2010 - 18:28
#23
Jeg ser BUM. hvilket undre mig meget. jeg SKAL bruge die (mysql_error); før jeg kan sikre mig i at man ikke får lov til at se "BUM" på nogen måde. og når jeg så bruger die (mysql_error); , ja så får jeg denne grimme tekst/kode frem på skærmen.
10. oktober 2010 - 18:32
#24
Har du mulighed for at poste dine koder igen, sådan som de ser ud lige nu? Så præcist som muligt. =)
10. oktober 2010 - 18:35
#25
Gah, jeg tror jeg fandt en løsning selv. :) die (); på denne måde, kommer der ingen tekst, og med echo kan jeg så selv skrive teksten som jeg ønsker det. Kan jeg have ret i dette? :)
10. oktober 2010 - 18:38
#26
Tror faktisk jeg fik den nu. Mange tak for hjælpen alle. Men jeg er ret sikker på i får flere point fra mig af, for jeg kommer 100% igen. :P
10. oktober 2010 - 20:33
#27
Ok. :) Det burde dog kunne laves uden die(); =)
11. oktober 2010 - 23:01
#28
Lav den sådan her: -------------------------- <?php session_start(); //Åben sessionen if ($_SESSION['brugernavn'] == "brugernavn" && $_SESSION['password'] == "password") { echo "bum"; } else { die ( 'Du er ikke logget ind' ); } ?> Det burde også virke?
12. oktober 2010 - 08:53
#29
Ja det burde det faktisk cronaldo. tak for input :)