Avatar billede Hansen_ Praktikant
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);

?>
Avatar billede w13 Novice
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")
Avatar billede w13 Novice
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);

}

?>
Avatar billede Hansen_ Praktikant
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?
Avatar billede Hansen_ Praktikant
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.
Avatar billede w13 Novice
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. =)
Avatar billede Hansen_ Praktikant
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 :).
Avatar billede Hansen_ Praktikant
10. oktober 2010 - 13:02 #7
For hvis jeg lukker alt ned, og åbner direkte i test.php - så viser den forsat BUM :(
Avatar billede Hansen_ Praktikant
10. oktober 2010 - 14:34 #8
Anyone? :)
Avatar billede kentora Nybegynder
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
Avatar billede Hansen_ Praktikant
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.
Avatar billede kentora Nybegynder
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.
Avatar billede Hansen_ Praktikant
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?

:)
Avatar billede kentora Nybegynder
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. :)
Avatar billede Hansen_ Praktikant
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.
Avatar billede w13 Novice
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!
Avatar billede w13 Novice
10. oktober 2010 - 17:44 #16
- og så et svar! ;)
Avatar billede Hansen_ Praktikant
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 :)
Avatar billede w13 Novice
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 &quot;.

Og tak for point! :)
Avatar billede w13 Novice
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 &quot;inkorrekt&quot;. Prøv igen!";


:)
Avatar billede Hansen_ Praktikant
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.

:(
Avatar billede Hansen_ Praktikant
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 :)
Avatar billede w13 Novice
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". :)
Avatar billede Hansen_ Praktikant
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.
Avatar billede w13 Novice
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. =)
Avatar billede Hansen_ Praktikant
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? :)
Avatar billede Hansen_ Praktikant
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
Avatar billede w13 Novice
10. oktober 2010 - 20:33 #27
Ok. :) Det burde dog kunne laves uden die();

=)
Avatar billede cronaldo Nybegynder
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?
Avatar billede Hansen_ Praktikant
12. oktober 2010 - 08:53 #29
Ja det burde det faktisk cronaldo.

tak for input :)
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

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