ugrás a tartalomhoz

PHP - MYSQL - Egyszerű (SESSION alapú) bejelentkező rendszer

attiss94 · 2011. Már. 30. (Sze), 18.52
Sziasztok srácok!
Új vagyok az fórumban, de máris lenne egy kérdésem hozzátok! Kezdő PHP-s tudásommal csináltam egy egyszerű (SESSION alapú) bejelentkező rendszert, de nem akar működni, és a segítségeteket kérném, mert akármit csinálok, nem jövök rá a hiba okára... Bele is vágok a közepébe:

telepites.php:
  1. <?php  
  2. $con = mysql_connect("localhost","v630i-w660i","XYZ");  
  3.   
  4. if (!$con)  
  5.   {  
  6.     die('Sikertelen kapcsolódás: ' . mysql_error());  
  7.   }  
  8.   
  9. mysql_select_db("v630i-w660i"$con);  
  10.   
  11. $sql = "CREATE TABLE Adminisztratorok  
  12.     (  
  13.         id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,  
  14.         felhasznalonev VARCHAR(50),  
  15.         jelszo VARCHAR(50)  
  16.         email VARCHAR(50)  
  17.     )";  
  18.   
  19. mysql_query($sql,$con);  
  20.   
  21. $jelszo = md5('Attiss');  
  22. $sql = "INSERT INTO Adminisztratorok (id, felhasznalonev, jelszo, email) VALUES  
  23.     (  
  24.         '',  
  25.         'Fábián Attila',  
  26.         '".$jelszo."',  
  27.         'xyz##kukac##freemail.hu'  
  28.     )";  
  29.   
  30. mysql_query($sql,$con);  
  31.   
  32. mysql_close($con);  
  33.   
  34. echo  "<head>"  
  35.       . "<title>Telepítés</title>"  
  36.       . "<meta name=\"description\" content=\"\" />"  
  37.       . "<meta name=\"keywords\" content=\"\" />"  
  38.       . "<meta name=\"author\" content=\"Fábián Attila\" />"  
  39.       . "<meta http-equiv=\"content-type\" content=\"text/html;charset=iso-8859-2\" />"  
  40.       . "<link rel=\"stylesheet\" type=\"text/css\" href=\"../stilus.css\" />"  
  41.       . "</head>"  
  42.       . "<body>"  
  43.       . "<font face=\"Verdana\" color=\"#FFFFFF\">"  
  44.       . "<div class=\"sikeres_\"></div>"  
  45.       . "<div class=\"sikeres\">"  
  46.       . "<center>"  
  47.       . "<p>"  
  48.       . "A telepítés sikeresen lezajlott!<br />"  
  49.       . "<a href=\"../index.php\">Adminisztrációs felület</a>"  
  50.       . "</p>"  
  51.       . "</center>"  
  52.       . "</div>"  
  53.       . "</font>"  
  54.       . "</body>"  
  55.       . "</html>";  
  56. ?>   
bejelentkezes_0.php:
  1. <?php  
  2. $adatbazis_host = 'localhost';  
  3. $adatbazis_nev ='v630i-w660i';  
  4. $adatbazis_felhasznalonev ='v630i-w660i';  
  5. $adatbazis_jelszo ='XYZ';  
  6.   
  7. mysql_connect ($adatbazis_host$adatbazis_felhasznalonev$adatbazis_jelszo);  
  8. mysql_select_db($adatbazis_nev);  
  9.   
  10. print "  
  11. <html>  
  12.     <head>  
  13.         <title>Bejelentkezés</title>  
  14.         <meta name=\"description\" content=\"\" />  
  15.         <meta name=\"keywords\" content=\"\" />  
  16.         <meta name=\"author\" content=\"Fábián Attila\" />  
  17.         <meta http-equiv=\"content-type\" content=\"text/html/php;charset=iso-8859-2\" />  
  18.         <link rel=\"stylesheet\" type=\"text/css\" href=\"../stilus.css\" />  
  19.     </head>  
  20.     <body>  
  21.         <font face=\"Verdana\" color=\"#FFFFFF\">  
  22.             <div class=\"bejelentkezes_\"></div>  
  23.             <div class=\"bejelentkezes\">  
  24.                 <center>  
  25.                     <form name=\"bejelentkezes\" method=\"post\" action=\"bejelentkezes_1.php\">  
  26.                         Felhasználónév:<br />  
  27.                         <input name=\"felhasznalonev\" type=\"text\" id=\"felhasznalonev\"><br />  
  28.                         Jelszó:<br />  
  29.                         <input name=\"jelszo\" type=\"password\" id=\"jelszo\"><br />  
  30.                         <input type=\"submit\" name=\"Submit\" value=\"Bejelentkezés\">  
  31.                     </form>  
  32.                 </center>  
  33.             </div>  
  34.         </font>  
  35.     </body>  
  36. </html>  
  37. ";  
  38. ?>  
bejelentkezes_1.php:
  1. <?php  
  2. session_start();  
  3.   
  4. $adatbazis_host = 'localhost';  
  5. $adatbazis_nev ='v630i-w660i';  
  6. $adatbazis_felhasznalonev ='v630i-w660i';  
  7. $adatbazis_jelszo ='XYZ';  
  8. $kezdooldal = '../index.php';  
  9.   
  10. mysql_connect ($adatbazis_host$adatbazis_felhasznalonev$adatbazis_jelszo);  
  11. mysql_select_db($adatbazis_nev);  
  12.   
  13. $jelszo = md5($_POST['jelszo']);  
  14. $sql_0 = "SELECT * FROM Adminisztratorok WHERE felhasznalonev = '".mysql_real_escape_string($_POST['felhasznalonev'])."' AND jelszo = '".mysql_real_escape_string($jelszo)."'";  
  15. $sql_1 = mysql_query($sql_0or die(mysql_error());  
  16. $sql_2 = mysql_num_rows($sql_1);  
  17.   
  18. if ($sql_2 == 1)  
  19.     {  
  20.         $_SESSION['felhasznalonev'] = $_POST['felhasznalonev'];  
  21.         header ('Location:'.$kezdooldal);  
  22.     }  
  23.     else{  
  24.         header ('Location:bejelentkezes_0.php');  
  25.     }  
  26. ?>  
bejelentkezes_2.php:
  1. <?php  
  2. session_start();  
  3.   
  4. $adatbazis_host = 'localhost';  
  5. $adatbazis_nev ='v630i-w660i';  
  6. $adatbazis_felhasznalonev ='v630i-w660i';  
  7. $adatbazis_jelszo ='XYZ';  
  8. $kezdooldal = '../index.php';  
  9.   
  10. if (isset($_SESSION['felhasznalonev']))  
  11.     {  
  12.         if (isset($_GET['kilep']))  
  13.             {  
  14.                 unset($_SESSION['felhasznalonev']);  
  15.                 header('Location:bejelentkezes_0.php');  
  16.                 exit();  
  17.             }  
  18.             else  
  19.                 {  
  20.                     print "<a href='?kilep=1'>Kijelentkezés</a><br>";  
  21.                     $hozzaferes = TRUE;  
  22.                 }  
  23.     }  
  24.     else  
  25.         {  
  26.             print 'Hozzáférés megtagadva!';  
  27.             include('bejelentkezes_0.php');  
  28.             $hozzaferes = FALSE;  
  29.         }  
  30. ?>  
index.php:
  1. <?php  
  2. include ('bejelentkezes_2.php');  
  3.   
  4. if ($hozzaferes == TRUE)  
  5.     {  
  6.         print 'Be vagyok jelentkezve...';  
  7.     }  
  8.     else  
  9.         {  
  10.             print 'Nem vagyok bejelentkezve...';  
  11.         }  
  12. ?>  
  13. <html>  
  14.     <head>  
  15.         <title>Valami</title>  
  16.         <meta name="description" content="" />  
  17.         <meta name="keywords" content="" />  
  18.         <meta name="author" content="Fábián Attila" />  
  19.         <meta http-equiv="content-type" content="text/html/php;charset=iso-8859-2" />  
  20.         <link rel="stylesheet" type="text/css" href="../stilus.css" />  
  21.     </head>  
  22.     <body>  
  23.         Valami...  
  24.     </body>  
  25. </html>  
Ha valaki megmondja, hogy mi a baja, hálás leszek, én már két napja nézegetem, de egyszerűen semmi...
 
1

Legalább...

QXY · 2011. Már. 30. (Sze), 20.23
Legalább annyit tegyél meg, hogy elárulod mi az ami nem úgy működik ahogy szeretnéd, ne kelljen nekünk is két napig nézegetni...
2

A bejelentkezes_0.php

attiss94 · 2011. Már. 30. (Sze), 20.47
A bejelentkezes_0.php tartalma megjelenik (ott kéri a felhasználó adatait), de amint elküldöm a FORM-ot, nem csinál semmit, vissza dobja az oldalt... (És elnézést, amiért ez kimaradt : )).
3

debug

QXY · 2011. Már. 30. (Sze), 22.37
Nos így mindjárt gyorsabban megy a dolog. A bejelentkezes_1.php-ban az sql query hibás:

$sql_0 = "SELECT FROM Adminisztratorok WHERE...

A "SELECT" után nem ártana legalább 1 oszlopnév, vagy * (minden oszlop). Valószinűleg ez miatt nem lesz egyetlen sor sem és ezért dob vissza...

Miután végrehajtod a query-t mindig ellenőrizd le nem volt-e hiba!

$sql_1 = mysql_query($sql_0) or die(mysql_error());

A végleges - működő - verzióból viszont majd távolítsd el ezt a kiegészítést (pl. kommentezd ki).
6

Megcsináltam, de....

attiss94 · 2011. Már. 31. (Cs), 11.06
Köszönöm a válaszokat, elvégeztem az általad ajánlott módosításokat (QXY)(itt is kijavítottam, hogy ne zavarjon meg senkit), de sajnos így is ugyanazt csinálja, mint eddig (semmilyen MYSQL hibaüzenet nem jön, csak visszadob a bejelentkező FORM-ot tartalmazó oldalhoz...).
10

Ezesetben nem talál egyező

QXY · 2011. Ápr. 3. (V), 02.19
Ezesetben nem talál egyező sort. Ahogy látom a felhasználónév tartalmaz ékezetet így valószinű, hogy valami charset probléma lesz. Szerintem próbaképp - de a későbbiekben is javallott - csinálj egy ékezetmentes felhasználónevet és azzal próbáld ki!

Én felhasználónévnek szinte mindenhol (kivétel ahol az email címével jelentkezik be) csak alfanumerikus karaktereket engedek, kis és nagybetűre NEM érzékeny és van a felhasználóknak külön fullname mezőjük (vagy külön vezetéknév/keresztnév, ahogy tetszik). Ez azért jó mert egyrészt elkerülhetőek a charset gondok, másrészt nem biztos hogy mindenhol (pl. másik gépről jelentkezik be) elérhetőek azok a speciális karakterek amiket az illető használt. De lehet ezzel az elvvel nem mindenki ért egyet.
13

Megpróbálom, hátha tényleg

attiss94 · 2011. Ápr. 10. (V), 18.08
Megpróbálom, hátha tényleg igazad van, majd még írok! : )
14

Átírtam a felhasználónevet

attiss94 · 2011. Ápr. 10. (V), 18.15
Átírtam a felhasználónevet ékezetmentes karakterekre, de még mindig nem működik... : (
(Itt meg lehet tekinteni: http://diak.v630i-w660i.hu/bejelentkezes/bejelentkezes_0.php)
Felhasználónév: Fabian_Attila
Jelszó: Attiss)
4

Az index.php-ban azt a

pinguka · 2011. Már. 31. (Cs), 07.43
Az index.php-ban azt a $hozzaferes-t nem értem.
Inkább csináld úgy hogy $_SESSION["logged"] értékét 1-re állítod amikor sikeres a bejelentkezés, és utána azt ellenőrizd.
5

$hozzaferes

QXY · 2011. Már. 31. (Cs), 07.59
A bejelentkezes_2.php-ban kap értéket, teljesen rendben van szerintem.
7

A telepites.php 15. sorából

bb0072 · 2011. Már. 31. (Cs), 14.17
A telepites.php 15. sorából nem maradt ki véletlenül egy vessző, ami miatt az Adminisztratorok tábla nem olyan mint kéne?
11

attiss94

attiss94 · 2011. Ápr. 10. (V), 17.55
Elnézést, tényleg igazad van, csak valamiért a bejelentkezes_0.php-t néztem...
8

Az itt lévő szerkesztőben a

attiss94 · 2011. Ápr. 2. (Szo), 02.32
Az itt lévő szerkesztőben a 15. sor tartalma már nem határoz meg semmit az Adminisztratorok táblában, mert azt akkor írja ki, ha a telepítés befejeződött. (És egyébként sem látok semmilyen hiányzó vesszőt : ).)
9

tábla

Poetro · 2011. Ápr. 2. (Szo), 02.46
  1. CREATE TABLE Adminisztratorok    
  2.     (    
  3.         id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,    
  4.         felhasznalonev VARCHAR(50),    
  5.         jelszo VARCHAR(50)    
  6.         email VARCHAR(50)    
  7.     )  
itt a jelszo VARCHAR(50) után hiányzik egy vessző, és ezt tette szóvá bb0072.
12

Igazatok van és köszönöm,

attiss94 · 2011. Ápr. 10. (V), 18.04
Igazatok van és köszönöm, hogy szóltatok, de még javítás után sem üzemel...

Lefuttatom a telepítést, sikeresen lefut, de a bejentkezes_0.php (az adatok beírása után) még mindig visszadob amikor elküldöm a FORM-ot.

Itt megtekinthetitek:
http://diak.v630i-w660i.hu/bejelentkezes/bejelentkezes_0.php
15

Helló próbáld meg így: $sql

madmax24 · 2011. Nov. 30. (Sze), 04.03
Helló próbáld meg így:

$sql = "CREATE TABLE `adminisztratorok` (
`id` MEDIUMINT NOT NULL auto_increment,
`felhasznalonev` varchar(50),
`jelszo` varchar(40),
`email` varchar(50),
PRIMARY KEY (`id`)
) ;";