[PHP] Session_username verdwijnt

Pagina: 1
Acties:
  • 63 views sinds 30-01-2008

  • DNA_Saint
  • Registratie: Maart 2004
  • Laatst online: 08:57

DNA_Saint

Go Go Gadget Ondertitel!

Topicstarter
Ik heb nu mijn login/registratie script goed werkend.
Maar ik stuit op een probleem.

Wat is hier fout aan?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?
include("connection/connection.php"); 

if ($HTTP_POST_VARS["username"] && $HTTP_POST_VARS["password"])
{   
    $sql_db = "SELECT id, username, password FROM users WHERE username = '$HTTP_POST_VARS[username]' AND password  = '$HTTP_POST_VARS[password]'";
    $res_db = mysql_query($sql_db);

    // check of er een overeenkomst is met ingevoerde en uitgelezen bestanden
    if (mysql_num_rows($res_db) >= 1)
    {
        // zet de values van database in een array
        $row = mysql_fetch_array($res_db);

        // zet de sessions
        $sess_id = $row[id];
        $sess_username = $row[username];

        // registreer ze
        session_register(sess_id);
        session_register(sess_username);

        echo "<META HTTP-EQUIV=REFRESH CONTENT=0; URL=index.php>";
    }
    
    /* indien er geen overeenkomst is tussen ingevoerde
    en uitgelezen gegevens */
    
    else
    {
        echo "Verkeerde loginnaam of paswoord<p>";
        
        echo "Ga <a href=\"$PHP_SELF\">terug</a> en probeer het opnieuw.";
    }
}

if (session_is_registered("sess_username") && session_is_registered("sess_id"))
{
    echo "Welkom $sess_username";
}
else
{
echo"<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\" >
      <input class=\"form_out\" name=\"username\" type=\"text\" value=\"gebruikersnaam\" size=\"15\" onFocus=\"value='';className='form_selected'\" onBlur=\"className='form_out'\" />
      <input class=\"form_out\" name=\"password\" type=\"password\" value=\"wachtwoord\" size=\"15\" onFocus=\"value='';className='form_selected'\" onBlur=\"className='form_out'\" />
      <input class=\"button\" type=\"submit\" name=\"submit\" value=\"Log In\">
      <div id=\"loginlinks\"><a href=\"register.php\">registreren</a> | <a href=\"#\">wachtwoord vergeten</a></div>
    </form>";
    }
?> 


Je krijgt heel even Welkom [USERNAME] te zien. (echo "Welkom $sess_username";)
en daarna verdwijnt de username gewoon en staat er alleen welkom.

wat doe ik fout? Ik zit al echt lang te prutsen ermee, maar ik krijg het maar niet opgelost.

ff andere vraag...is dit wel veilig/slim wat ik doe?

Huub Huub Barbatruc!


  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Ten eerste gebruik je geen session_start().
Deze heb je nodig als session_auto_start in je php.ini uit staat.

En ten tweede kan je beter gebruik maken van het $_SESSION array.
Deze is veiliger en sneller, aangenomen dat je een recente PHP versie gebruikt.
De methoden die jij gebruikt zijn verouderd. :)

PHP.net -> Sessions


Op je 2e vraag: Je vergeet eigenlijk een beetje te controleren of het wachtwoord wel klopt. :D
Scrollen Gonadan. :+

Je query is wel erg gevoelig voor SQL injectie.
Als je als user name en wachtwoord iets opgeeft als ' or ''='
Dan krijg je een query als:
PHP:
1
    $sql_db = "SELECT id, username, password FROM users WHERE username = '' OR ''= '' AND password  = '' OR ''='' ";

Dan wordt het makkelijk inloggen volgens mij. ;)

[ Voor 82% gewijzigd door Gonadan op 17-04-2007 12:27 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Lees je sowieso maar eens in over superglobals, want $PHP_SELF bestaat ook al een tijdje niet meer op elk systeem; je zal daar $_SERVER['PHP_SELF'] voor moeten gebruiken.

Zie ook Programming FAQ - PHP trouwens. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • DNA_Saint
  • Registratie: Maart 2004
  • Laatst online: 08:57

DNA_Saint

Go Go Gadget Ondertitel!

Topicstarter
ik heb session_start() in mijn index.php.
Deze code hierboven wordt daarin geinclude.

ik zit nu beetje te experimenteren met $_SESSION.

bedankt :)

Huub Huub Barbatruc!


  • DNA_Saint
  • Registratie: Maart 2004
  • Laatst online: 08:57

DNA_Saint

Go Go Gadget Ondertitel!

Topicstarter
Wie kan mij even een zetje in de rug geven met Md5 encryptie?

ik kan wel een paswoord encrypted met Md5 in mijn database zetten.

Maar hoe zorg ik ervoor dat het weer gedecrypt wordt? Overal lees ik dat het niet kan.
Maar hoe kan je dan iemand laten inloggen?

wie stuurt mij de goede richting op?

Huub Huub Barbatruc!


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

DNA_Saint schreef op dinsdag 17 april 2007 @ 14:50:
Wie kan mij even een zetje in de rug geven met Md5 encryptie?

ik kan wel een paswoord encrypted met Md5 in mijn database zetten.

Maar hoe zorg ik ervoor dat het weer gedecrypt wordt? Overal lees ik dat het niet kan.
Maar hoe kan je dan iemand laten inloggen?

wie stuurt mij de goede richting op?
door het ingevoerde wachtwoord ook met md5 de "encrypten" en die twee strings vergelijken, maar weet je zeker dat je dit niet hebt kunnen vinden op bijvoorbeeld md5 pagina uit de php manual? kant en klare voorbeelden :X

  • ReverendBizarre
  • Registratie: December 2001
  • Laatst online: 24-03-2021
MD5 is een hashing algoritme, geen encryption algoritme. Een hash kan je niet decoderen. Sites die van MD5 gebruik maken voor paswoord opslag slaan dus de MD5 hash van het paswoord op en controleren vervolgens een MD5 hash van het ingevoerde paswoor daarmee.

  • DNA_Saint
  • Registratie: Maart 2004
  • Laatst online: 08:57

DNA_Saint

Go Go Gadget Ondertitel!

Topicstarter
Erkens schreef op dinsdag 17 april 2007 @ 14:52:
[...]

door het ingevoerde wachtwoord ook met md5 de "encrypten" en die twee strings vergelijken, maar weet je zeker dat je dit niet hebt kunnen vinden op bijvoorbeeld md5 pagina uit de php manual? kant en klare voorbeelden :X
ah ok!
ja, kon juist bij php.net niks vinden erover. Kon alleen maar vinden hoe je het moest encrypten.

Huub Huub Barbatruc!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

CAIRATH zegt net dat het geen encryptie is maar hashing. Zolang je dat verschil niet snapt zal het heel lastig blijven om ermee te werken. Bovendien snap ik niet helemaal wat een vraag over MD5 verder te maken heeft met je huidige topic; dat je al een topic hebt wil niet zeggen dat je daar maar een vergaarbak van kan maken voor al je vragen die je "zojuist bij php.net niet kon vinden" terwijl ze wel letterlijk behandeld staan.

Je oorspronkelijke probleem staat letterlijk behandeld op de betreffende manualpagina's van php.net en bovendien ook nog eens in onze FAQ, en voor je tweede probleem had je de oplossing zoals Erkens al zegt ook binnen no time moeten kunnen vinden. Ik doe dit topic dan ook op slot om je aan te moedigen éérst te lezen en dán pas te vragen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.