ugrás a tartalomhoz

Session

superman · 2010. Júl. 11. (V), 22.22
Minden tökéletesen működik, annak ellenére, hogy sok hibát kapok.
login.php
  1. <?php>  
  2. session_start();  
  3. include ("includes/config.php");  
  4. ?>  
  5. <html>  
  6. <head>  
  7. </head>  
  8. <body>  
  9. <form method="post">  
  10. <table>  
  11. <tr>  
  12. <td>  
  13. Vezetéknév  
  14. </td>  
  15. <td>  
  16. <input type="text" name="lastname"/>  
  17. </td>  
  18. </tr>  
  19. <tr>  
  20. <td>  
  21. Keresztnév  
  22. </td>  
  23. <td>  
  24. <input type="text" name="firstname"/>  
  25. </td>  
  26. </tr>  
  27. <tr>  
  28. <td>  
  29. Jelszó  
  30. </td>  
  31. <td>  
  32. <input type="password" name="password"/>  
  33. </td>  
  34. </tr>  
  35. <tr>  
  36. <td>  
  37. <input type="submit" name="loginbutton"/>  
  38. </td>  
  39. </tr>  
  40. </table>  
  41. </form>  
  42. <?php  
  43. mysql_connect($dbHost$dbUser$dbPass);  
  44. mysql_select_db($dbName);  
  45. if($_SESSION['log'] == true)  
  46. {  
  47.     print ("Sajnálom, de jelenleg be vagy jelentkezve!");  
  48. }  
  49. else  
  50. {  
  51.     if (isset($_POST['loginbutton']))  
  52.     {  
  53.         $lastname = $_POST['lastname'];  
  54.         $firstname = $_POST['firstname'];  
  55.         $password = $_POST['password'];  
  56.           
  57.         $sql = "SELECT * FROM users WHERE (lastname='".$lastname."' AND firstname='".$firstname."' AND password='".$password."')";  
  58.         $query = mysql_query($sql);  
  59.         $fetch = mysql_fetch_assoc($query);  
  60.           
  61.         if(mysql_num_rows($query) !== 0)  
  62.         {  
  63.             print ("Sikeres belépés");  
  64.             $_SESSION['log'] = true;  
  65.             $_SESSION['id'] = mysql_num_rows($fetch);  
  66.             print ("A jelenlegi azonosítód: ".$_SESSION['id']);  
  67.         }  
  68.         else  
  69.         {  
  70.             print ("Sikertelen belépés<br>");  
  71.         }  
  72.     }  
  73. }  
  74. ?>  
  75. </body>  
  76. </html>  
Itt a config.php is...hátha itt van kimenet.(Hozzáteszem sehol se találtam arra vonatkozóan írást, hogy mi a kimenet)
  1. <?php  
  2. /************************* 
  3. ***ADATBÁZIS BEÁLLÍTÁSOK** 
  4. *************************/  
  5.   
  6. $dbHost = "********";  
  7. $dbUser = "********";  
  8. $dbPass = "********";  
  9. $dbName = "********";  
  10. ?>  
Nem nagyon értek a session-ökhöz. Ezeket a hibákat kapom:
Warning: session_start() [function.session-start]: open(/tmp/sess_1ba583c6c101b6d96fb69e15004b55c0, O_RDWR) failed: No such file or directory (2) in /login.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /login.php:2) in /login.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /login.php:2) in /login.php on line 2


Warning: Unknown: open(/tmp/sess_1ba583c6c101b6d96fb69e15004b55c0, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
 
1

Nem létezik a tmp nevű

inf · 2010. Júl. 12. (H), 00.00
Nem létezik a tmp nevű könyvtár, ahova a session fájlokat tenné a rendszer, meg a session headert elsőnek kell kitenni. Nem hiszem, hogy minden tökéletesen menne ilyen hibák mellett...
2

Hol kellene lennie tmp nevű

superman · 2010. Júl. 12. (H), 00.09
Hol kellene lennie tmp nevű könyvtárnak?
3

A webroot-on belül közvetlenül

_subi_ · 2010. Júl. 12. (H), 09.56
A webroot-on belül közvetlenül, az index.php-vel egy szinten kellene lennie a tmp könyvtárnak.

Csak nem ATW-s tárhely? :) Náluk láttam ilyesmit, szerencsére ez sem tegnap volt…
4

De...sajna atw-s... végülis

superman · 2010. Júl. 12. (H), 12.57
De...sajna atw-s... végülis ingyenes, mivel csak kezdő vagyok. De tervezem, hogy komolyabban foglalkozom a programozással. Addig is jó az ingyenes tárhely...bár lehet akkor váltok az atw-ről. Tudtok ajánlani valami jót? ultraweb esetleg?
5

Viszont most látom, hogy a

superman · 2010. Júl. 12. (H), 13.14
Viszont most látom, hogy a lekérdezéssel is baj van... print ("A jelenlegi azonosítód: ".$_SESSION['id']); ennek a sornak a visszatérési értéke "A jelenlegi azonosítód: Array"

Nem megy a lekérdezés...esetleg valaki látja mi a hiba? Légyszi segítsetek, soha nem csináltam még MySql lekérdezést...
6

mysql_num_rows

Schmidi · 2010. Júl. 12. (H), 13.27
A mysql_num_rows() egy result sorainak számát adja vissza, ezt a feltétel vizsgálatkor használod is.

Viszont utána ugyanezt a függvényt alkalmazod a $fetch tömbre, és az így kapott eredményt próbálod betenni a sessionbe ID-ként.

A $fetch tömb tartalmazza a lekérdezett adatokat, ezen ne mysql_num_rows()-t futtass, hanem olvasd ki belőle a megfelelő értéket.

A tömb tartalmát pl. a print_r(), var_export(), var_dump() metódusokkal tudod megnézni.

Amúgy ez egy asszociatív tömb, ahol a kulcsok az adatbázis tábla mezőnevei, az értékek pedig az adatbázis tábláben szereplő értékek lesznek.
7

Na jó, kicsit bőbeszédűbb

bugadani · 2010. Júl. 12. (H), 13.31
Na jó, kicsit bőbeszédűbb leszek mint eredetileg szerettem volna.

De azért első körön, minden rossz szándék nélkül: RTFM.
mysql_num_rows
mysql_fetch_assoc
mysq_real_escape_string

Másodsorban:
  1. $conn = mysql_connect($dbHost$dbUser$dbPass);    
  2. mysql_select_db($dbName);    
  3. if($_SESSION['log'] == true)    
  4. {    
  5.     print ("Sajnálom, de jelenleg be vagy jelentkezve!");    
  6. }    
  7. else    
  8. {    
  9.     if (strtolower($_SERVER['REQUEST_METHOD']) == 'post')    
  10.     {    
  11.         if(get_magic_quotes_gpc() === true){  
  12.             $lastname = striplashes($_POST['lastname']);  
  13.             $firstname= striplashes($_POST['firstname']);  
  14.             $password = striplashes($_POST['password ']);  
  15.         }  
  16.         $lastname = mysql_real_escape_string($lastname , $conn);    
  17.         $firstname = mysql_real_escape_string($firstname$conn);    
  18.         $password = mysql_real_escape_string($password$conn);  
  19.             
  20.         $sql = "SELECT * FROM users WHERE (lastname='".$lastname."' AND firstname='".$firstname."' AND password='".$password."')";    
  21.         $query = mysql_query($sql);    
  22.         $fetch = mysql_fetch_assoc($query);    
  23.             
  24.         if($fetch !== false)    
  25.         {    
  26.             print ("Sikeres belépés");    
  27.             $_SESSION['log'] = true;    
  28.             $_SESSION['id'] = $fetch['id'];  
  29.             unset($fetch['password']);  
  30.             $_SESSION['data'] = $fetch;  
  31.             print ("A jelenlegi azonosítód: ".$_SESSION['id']);    
  32.         }    
  33.         else    
  34.         {    
  35.             print ("Sikertelen belépés<br>");    
  36.         }    
  37.     }    
  38. }    
Mondjuk valahogy így. Bár megmondom őszintén, én nem így csinálnám :)

Ó és nagyon remélem hogy az első sorban az a <?php> csak elírás.
8

hehe. Igen az elírás. De a

superman · 2010. Júl. 12. (H), 13.38
hehe. Igen az elírás. De a rendes progiban nincs elírva. Csak itt sikerült...bár nem tudom hogy...