Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Nie działa sesja!
Forum PHP.pl > Forum > Przedszkole
WTS
Witam.
Zrobiłem logowanie, ale nie działa mi sesja. Po zalogowaniu się pokazuje mi, że zalogowano pomyślnie, ale sesja nie działa bo jak wchodzę w profil.php to pokazuje mi sie komunikat:
"Worning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /profil.php on line 13
First Name Last Name E-mail Adress Adress Country Telephone
"
Proszę o pomoc w rozwiązaniu tego problemu. Gdzie popełniłem błąd?

I tak, logowanie z formularza przechodzi do pliku checklogin.php, który wygląda tak:
  1. <?php
  2.  
  3. mysql_connect("$host", "$username", "$password")or die("cannot connect");
  4. mysql_select_db("$db_name")or die("cannot select DB");
  5.  
  6. $myusername=$_POST['myusername'];
  7. $mypassword=$_POST['mypassword'];
  8.  
  9. $myusername = stripslashes($myusername);
  10. $mypassword = stripslashes($mypassword);
  11. $myusername = mysql_real_escape_string($myusername);
  12. $mypassword = mysql_real_escape_string($mypassword);
  13.  
  14. $sql="SELECT * FROM $tbl_name WHERE email='$myusername' and password='$mypassword'";
  15. $result=mysql_query($sql);
  16.  
  17. $count=mysql_num_rows($result);
  18.  
  19. if($count==1){
  20. session_register("password");
  21. header("location:login_success.php");
  22. }
  23. else {
  24. echo "Falscher Benutzername oder Passwort";
  25. }
  26.  
  27. ?>


następnie login_success.php

  1. <?php
  2. header("location:main_login.php");
  3. }
  4. ?>


w index przed [html] mam to:

  1. <?php
  2. header("location:main_login.php");
  3. }
  4. ?>
  5.  
  6. <?php
  7. ?>


no i profil.php

  1. <?php
  2. $username="";
  3. $password="";
  4. $database="";
  5.  
  6. mysql_connect(localhost,$username,$password);
  7. @mysql_select_db($database) or die( "Unable to select database");
  8. $query="SELECT firstname, name, email, country, country2, country3, tel FROM registered_members WHERE id=$id";
  9. $result=mysql_query($query);
  10.  
  11. $id = $_SESSION['login_id'];
  12.  
  13. $num=mysql_numrows($result);
  14.  
  15. ?>
  16.  


nio i potem mam formularz, w który dane powinny być wpisywane, ale tam all ok więc nie wklejam smile.gif
Gdy w 8 linii powyższego kodu zmienię "id=$id" na konkretne id np. "id=10" wtedy wszystko wyświetla się poprawnie.
Proszę o pomoc lub rady.
Dzięki !
mat-bi

session_destroy(); - ?
kinder
w profil.php na samym poczatku spobuj dać:
kadlub
w pliku profil.php
linie 11 daj przed linie 8

a tu nie
$num=mysql_numrows($result);

tylko #
$num=mysql_num_rows($result);

a tak w ogóle to masz coś w $_SESSION['login_id']
i w każdym pliku php daj na początku session_start();
WTS
Dzięki za odpowiedzi...

dałem na początku profil.php - session_start ();

wrzuciłem linijkę 11 przed 8

poprawiłem $num=mysql_num_rows($result);
teraz profil.php wygląda tak

  1. <?php
  2. $username="";
  3. $password="";
  4. $database="";
  5.  
  6. mysql_connect($username,$password);
  7. @mysql_select_db($database) or die( "Unable to select database");
  8.  
  9. $id = $_SESSION['login_id'];
  10.  
  11. $query="SELECT firstname, name, email, country, country2, country3, tel FROM registered_members WHERE id=$id";
  12. $result=mysql_query($query);
  13.  
  14. $num=mysql_num_rows($result);
  15.  
  16. ?>


i pojawiły się błędy ...

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

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /profil.php on line 15
krzywy36
nie możesz wyświetlić nic przed "session_start();". co do drugiego errora - dodaj do wszystkich mysql_query(), "or die mysql_error();"
WTS
@ krzywy36
pierwszej części wypowiedzi nie zrozumiełem ;/

jak dodałem "or die mysql_error();" to dopiero narobił mi się bajzel ;/

cośtam doczytałem, że "if(!session_is_registered(email))" trzeba by zastąpić "if(isset($_SESSION['email']))", ale to teżnic nie dąło ;/
kadlub
jakie masz błędy ?
WTS
Parse error: syntax error, unexpected T_LOGICAL_OR in /profil.php on line 15

poniżej linie od 15 do 17
  1.  
  2. $num=mysql_num_rows($result);
kadlub
or die (mysql_error());
powinno być tak
WTS
poprawiłem i jest bez zmian ;/

nadal
Parse error: syntax error, unexpected T_LOGICAL_OR in /profil.php on line 15

wkleje cały kod z profil.php może to cośda

  1. <html>
  2. <body>
  3. <?php
  4. $username="";
  5. $password="";
  6. $database="";
  7.  
  8. mysql_connect($username,$password);
  9. @mysql_select_db($database) or die( "Unable to select database");
  10.  
  11. $id = $_SESSION['login_id'];
  12.  
  13. $query="SELECT firstname, name, email, country, country2, country3, tel FROM registered_members WHERE id=$id";
  14. $result=mysql_query($query);
  15.  
  16. $num=mysql_num_rows($result);
  17.  
  18. ?>
  19. <table border="0" cellspacing="2" cellpadding="2">
  20. <tr><th>
  21. <th><font face="Arial, Helvetica, sans-serif">First Name</font></th>
  22. <th><font face="Arial, Helvetica, sans-serif">Last Name</font></th>
  23. <th><font face="Arial, Helvetica, sans-serif">E-mail</font></th>
  24. <th><font face="Arial, Helvetica, sans-serif">Adress</font></th>
  25. <th><font face="Arial, Helvetica, sans-serif">Adress</font></th>
  26. <th><font face="Arial, Helvetica, sans-serif">Country</font></th>
  27. <th><font face="Arial, Helvetica, sans-serif">Telephone</font></th>
  28.  
  29. </th></tr>
  30.  
  31. <?php
  32. $i=0;
  33. while ($i < $num) {
  34.  
  35. $f1=mysql_result($result,$i,"firstname");
  36. $f2=mysql_result($result,$i,"name");
  37. $f3=mysql_result($result,$i,"email");
  38. $f4=mysql_result($result,$i,"country");
  39. $f5=mysql_result($result,$i,"country2");
  40. $f6=mysql_result($result,$i,"country3");
  41. $f7=mysql_result($result,$i,"tel");
  42.  
  43. ?>
  44. <tr>
  45. <td>
  46. <td width="96"><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
  47. <td width="96"><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
  48. <td width="96"><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>
  49. <td width="116"><font face="Arial, Helvetica, sans-serif"><?php echo $f4; ?></font></td>
  50. <td width="116"><font face="Arial, Helvetica, sans-serif"><?php echo $f5; ?></font></td>
  51. <td width="96"><font face="Arial, Helvetica, sans-serif"><?php echo $f6; ?></font></td>
  52. <td width="96"><font face="Arial, Helvetica, sans-serif"><?php echo $f7; ?></font></td>
  53.  
  54. </td>
  55. </tr>
  56. <input onclick="history.go(-1)" type="button" value="Go Back" /><br><br>
  57. <body text="black" bgcolor="white" class="holder" style="background-image: url(web_images/swiat.jpg); background-repeat: no-repeat; background-position: center top; link="black" vlink="#666666" alink="black">
  58.  
  59.  
  60. <?php
  61. $i++;
  62. }
  63. ?>
  64. </body>
  65. </html>


mat-bi
  1. $result=mysql_query($query);
  2. or die (mysql_error());
- nie moż esz sokńczyć instrukcji średnikiem i jeszcze dopisywać or

  1. $result=mysql_query($query) or die (mysql_error());
kadlub
  1.  
  2.  
  3. $result=mysql_query($query) or die (mysql_error());
  4.  


ma być tak a nie ze średnikiem po środku wcześniej napisałeś dobrze przy połączeniu a teraz źle
wmatusiak
  1. $result=mysql_query($query);

na
  1. $result=mysql_query($query)

zauważ brak średnika

EDIT: No to reakcja była natychmiastowa wink.gif
WTS
Dzięki za szybką reakcję, faktycznie skupiłem się na tej 15 linii i przeoczyłem ten ";" którego nie wykasowałem dodając "or (..)"

poprawiłem i teraz mam to:

Something is wrong in your syntax obok '' w linii 1
wmatusiak
W sesji niema 'login_id' a próbujesz go używać.
Musisz zapisać tą wartość do sesji w momencie logowania.
w checklogin.php
pod linią
  1. if($count==1){

dodaj
  1. $row = mysql_fetch_assoc($result);
  2. $_SESSION['login_id'] = $row['<tutaj nazwa kolumny z tym id nie wiem jak to się u ciebie w bazie nazywa>'];

ta nazwa kolumny oczywiście bez < i > ale ' i ' zostają wink.gif

PS. jak już ktoś wyżej pisał dodaj też do każdego pliku na górze session_start();
WTS
Dziękuję za pomoc - problem rozwiązany!

Dla tych co pomogli "+pomógł" oczywiście smile.gif

do zobaczenia przy kolejnym problemie ;pp


PROSZĘ ZAMKNĄĆ TEMAT smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.