Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Rejestracja i logowanie PROBLEM!
Forum PHP.pl > Forum > Przedszkole
milw0rm
Cześć mam problem z wyświetleniem z tabeli mysql nowego rekordu za pomocą sesji, spróbuję wam tutaj to przedstawić a więc tak

Jest sobie skrypt conn.php służący do podłączenia wygląda on tak:
  1. <?
  2. define('DB_HOST','localhost');
  3. define('DB_USER','terrory_root'); //wpisz nazwęużytkownika bazy danych
  4. define('DB_PASS','pacio123'); //wpisz hasło dla tego użytkownika
  5. define('DB_DB','terrory_wirtualny');
  6.  
  7. $connect = mysql_connect(DB_HOST, DB_USER, DB_PASS)
  8. or die('Nie udało połączyc się z bazą danych. '.mysql_error());
  9.  
  10. mysql_select_db(DB_DB,$connect)
  11. ?>


Następnie mam skrypt register.php oczywiście do rejestracji na stronie zobaczcie że dodałem sobie tam pole rejestracyjne imie
  1. <?php
  2. require 'conn.php';
  3.  
  4.  
  5. if (isset($_POST['konto']) and isset($_POST['password']) and isset($_POST['password2']))
  6.  
  7. {
  8.  
  9. if ($_POST['password']==$_POST['password2'])
  10.  
  11. {
  12.  
  13. $konto = mysql_real_escape_string (trim($_POST['konto']));
  14.  
  15. $password = sha1(md5(mysql_real_escape_string (trim($_POST['password']))));
  16.  
  17. $imie = mysql_real_escape_string (trim($_POST['imie']));
  18.  
  19. $ile =mysql_query("SELECT * FROM `user` WHERE login = '$konto'");
  20.  
  21. $ile = mysql_num_rows($ile);
  22.  
  23. if ($ile==0) {
  24.  
  25. $zapytanie="INSERT INTO user (login,password,imie) VALUES('$konto','$password','$imie')";
  26.  
  27. mysql_query($zapytanie) or die("Wystąpił błąd" );
  28.  
  29. echo('Konto '.$konto.' zostalo utworzone');
  30.  
  31.  
  32.  
  33. }
  34.  
  35. else
  36.  
  37. {
  38.  
  39. echo("Taki uzytkownik juz istnieje. Kliknij wstecz aby zarejestrowac sie ponownie");
  40.  
  41. }
  42.  
  43. }
  44.  
  45. else echo ("Podane hasla nie zgadzaja sie");
  46.  
  47. }
  48.  
  49. else{
  50.  
  51. ?>
  52.  
  53. <html>
  54.  
  55. <body>
  56.  
  57. <h1>Rejestracja</h1>
  58.  
  59. <form action="register.php" method="post">
  60.  
  61. <strong>Nazwa konta:</strong><input name="konto" type="text" value="" /><br>
  62.  
  63. <strong>Haslo:</strong><input name="password" type="password" value="" /><br>
  64.  
  65. <strong>Powtorz haslo:</strong><input name="password2" type="password" value="" /><br>
  66.  
  67. <strong>Imie:</strong><input name="imie" type="text" value="" /><br>
  68.  
  69. <input type="submit" value="Zarejestruj" />
  70.  
  71. </form>
  72.  
  73. </body>
  74.  
  75. </html>
  76.  
  77. <?php
  78.  
  79. }
  80.  
  81.  
  82.  
  83. ?>


tutaj mamy login.php
  1. <?php
  2.  
  3.  
  4. if (isset($_POST['konto']) and isset($_POST['password']))
  5.  
  6. {
  7.  
  8. require('conn.php');
  9.  
  10. $konto=mysql_real_escape_string(trim($_POST['konto']));
  11.  
  12. $password=mysql_real_escape_string(trim($_POST['password']));
  13.  
  14. if ($konto!="" and $password!="")
  15.  
  16. {
  17.  
  18. $password = sha1(md5($password));
  19.  
  20. $zapytanie="SELECT id FROM user WHERE login='$konto' and password ='$password'";
  21.  
  22. $temp=mysql_query($zapytanie) or die("Wystąpił błąd");
  23.  
  24. $ile=mysql_num_rows($temp);
  25.  
  26. $temp=mysql_fetch_array($temp);
  27.  
  28. $id=$temp['id'];
  29.  
  30.  
  31.  
  32. if ($ile==1)
  33.  
  34. {
  35.  
  36. $_SESSION['user_id']=$id;
  37.  
  38. $_SESSION['login']=$konto;
  39.  
  40. echo('Zostales zalogowany. ');
  41.  
  42. }
  43.  
  44. else echo ('Podales zle dane. Kliknij wstecz aby sprobowac ponownie.');
  45.  
  46. }
  47.  
  48. }
  49.  
  50. else{
  51.  
  52. ?>
  53.  
  54. <html>
  55.  
  56. <body>
  57.  
  58. <form action="login.php" method="post">
  59.  
  60. <strong>Nazwa konta:</strong><input name="konto" type="text" value="" /><br>
  61.  
  62. <strong>Haslo:</strong><input name="password" type="password" value="" /><br>
  63.  
  64. <input type="submit" value="Zaloguj" />
  65.  
  66. </form>
  67.  
  68. </body>
  69.  
  70. </html>
  71.  
  72. <?php
  73.  
  74. }?>


i przejdziemy do sedna sprawy w pliku index.php mam problem z wyświetleniem danego pola ponieważ login i id konta wyświetla mi za pomocą sesji jak próbuję dodać sesję z imię to wywala mi błąd mysql pokaże jak to robię
mamy standardowy plik index.php
  1. <?php
  2.  
  3. if (isset($_SESSION['user_id']) and isset($_SESSION['login']))
  4. {
  5.  
  6. echo "Zostales zalogowany jako: ";
  7.  
  8. echo $_SESSION['login'];
  9.  
  10. echo "<br>";
  11.  
  12. echo "Przejdz do strony glównej";
  13.  
  14. }
  15.  
  16. else
  17.  
  18. {
  19. echo "Nie jestes zalogowany";
  20.  
  21.  
  22.  
  23. }
  24.  
  25. ?>


ja próbuję wyświetlić kolejny rekord z tabeli tak o:
  1. <?php
  2.  
  3. if (isset($_SESSION['user_id']) and isset($_SESSION['login']) and isset($_SESSION['imie']))
  4. {
  5.  
  6. echo "Zostales zalogowany jako: ";
  7.  
  8. echo $_SESSION['login'];
  9.  
  10. echo "<br>";
  11.  
  12. echo "Przejdz do strony glównej";
  13.  
  14. echo $_SESSION['imie'];
  15.  
  16. }
  17.  
  18. else
  19.  
  20. {
  21. echo "Nie jestes zalogowany";
  22.  
  23.  
  24.  
  25. }
  26.  
  27. ?>


i logując się do strony przechodzę do index.php i wyświetla mi się nie jesteś zalogowany tak jak by szukał tego pola imie w zalogowaniu ale ja chcę tylko go wyświetlić nie używać go przy logowaniu jak to zrobić powie ktoś ?
tehaha
nie bardzo zrozumiałem o co Ci chodzi, ale ten ostatni skrypt, który dałeś wyświetla "nie jesteś zalogowany", ponieważ nie ustawiłeś zmiennej $_SESSION['imie']
pedro84
A czy wg. Ciebie ten warunek został spełniony?
  1. isset($_SESSION['imie'])


Odp. Nie.
milw0rm
przepraszam a tutaj co jest ?
  1. [PHP] pobierz, plaintext
  2. <?php
  3.  
  4. if (isset($_SESSION['user_id']) and isset($_SESSION['login']) and isset($_SESSION['imie']))
  5. {
  6.  
  7. echo "Zostales zalogowany jako: ";
  8.  
  9. echo $_SESSION['login'];
  10.  
  11. echo "<br>";
  12.  
  13. echo "Przejdz do strony glównej";
  14.  
  15. echo $_SESSION['imie'];
  16.  
  17. }
  18.  
  19. else
  20.  
  21. {
  22. echo "Nie jestes zalogowany";
  23.  
  24.  
  25.  
  26. }
  27.  
  28. ?>


jak nie został spełniony ?
haahh
Ale jeżeli masz tylko:
  1. $_SESSION['user_id']=$id;
  2. $_SESSION['login']=$konto;

To nie możesz wywołać $_SESSION['imie'], bo nie ma czegoś takiego jak 'imie' w twojej sesji. Możesz użyć id do wyszukania odpowiedniego imienia w bazie danych i tak też rób.

Tutaj pokazuje jak pobrać imię, mają user_id umieszczone w sesji.
  1. $id = $_SESSION['user_id'];
  2. $q = "SELECT imie FROM user WHERE user_id=$id";
  3. $r = @mysqli_query($dbc, $q);
  4. $row = mysqli_fetch_array($r, MYSQLI_NUM);
  5.  
  6. echo $row[0];
  7.  
  8. mysqli_free_result($r);


Zapoznaj się jeszcze z zabezpieczaniem sesji.
pedro84
A pokaż mi gdzie deklarujesz zmienną $_SESSION['imie'].
yevaud
a gdzie cos przypisujesz do $_SESSION['imie'] ?
milw0rm
kurde nie wiem jak sobie z tym poradzić nie wiem jak za deklarować aby po zalogwaniu użytkownika z tabeli wyciągnąć dodatkowe np jeszcze imie nazwisko etc.
chodzi mi nawet o napisanie nowego pliku znaczy że np po wyświetleniu tego tekstu
Zostales zalogowany jako: pacio123
Przejdz do strony glównej

na stornie głównej lub np w profilu z definiować imię itd

Tutaj pokazuje jak pobrać imię, mają user_id umieszczone w sesji.
  1. pobierz, plaintext
  2. $id = $_SESSION['user_id'];
  3. $q = "SELECT imie FROM user WHERE user_id=$id";
  4. $r = @mysqli_query($dbc, $q);
  5. $row = mysqli_fetch_array($r, MYSQLI_NUM);
  6.  
  7. echo $row[0];
  8.  
  9. mysqli_free_result($r);


co do tego kodu pomógł byś mi jeszcze w wstawienie tego do strony tej:

  1. <?php
  2.  
  3. if (isset($_SESSION['user_id']) and isset($_SESSION['login']))
  4. {
  5.  
  6. echo "Zostales zalogowany jako: ";
  7.  
  8. echo $_SESSION['login'];
  9.  
  10. echo "<br>";
  11.  
  12. echo "Przejdz do strony glównej";
  13.  
  14. }
  15.  
  16. else
  17.  
  18. {
  19. echo "Nie jestes zalogowany";
  20.  
  21.  
  22.  
  23. }
  24.  
  25. ?>
tehaha
po prostu pobierz z bazy danych oprócz id, również imię czy tam nazwę użytkownika, czyli coś takiego( nie wiem jak się nazywają twoje kolumny więc dostosuj to sobie):
  1. if ($konto!="" and $password!="")
  2.  
  3. {
  4.  
  5. $password = sha1(md5($password));
  6.  
  7. $zapytanie="SELECT id, name FROM user WHERE login='$konto' and password ='$password'";
  8.  
  9. $temp=mysql_query($zapytanie) or die("Wystąpił błąd");
  10.  
  11. $ile=mysql_num_rows($temp);
  12.  
  13. $temp=mysql_fetch_array($temp);
  14.  
  15. $id=$temp['id'];
  16.  
  17. $name = $temp['name'];
  18.  
  19.  
  20.  
  21. if ($ile==1)
  22.  
  23. {
  24.  
  25. $_SESSION['user_id']=$id;
  26.  
  27. $_SESSION['login']=$konto;
  28.  
  29. $_SESSION['imie']=$name;
  30.  
  31. echo('Zostales zalogowany. ');
  32.  
  33. }
  34.  
  35. else echo ('Podales zle dane. Kliknij wstecz aby sprobowac ponownie.');
  36.  
  37. }
haahh
Proszę bardzo:

  1. <?php
  2. require 'conn.php';
  3.  
  4. if (isset($_SESSION['user_id']) and isset($_SESSION['login']))
  5. {
  6.  
  7. $id = $_SESSION['user_id'];
  8. $q = "SELECT imie FROM user WHERE id='$id'"; //sprawdz, czy dałem dobre nazwy tabel itp. itd.
  9. $r = @mysql_query($q);
  10. $row = mysql_fetch_array($r, MYSQLI_NUM);
  11.  
  12.  
  13.  
  14. echo "Zostales zalogowany jako: ";
  15.  
  16. echo $_SESSION['login'];
  17.  
  18. echo "Twoje imię brzmi:";
  19.  
  20. echo $row[0];
  21.  
  22. echo "<br>";
  23.  
  24. echo "Przejdz do strony glównej";
  25.  
  26. }
  27.  
  28. else
  29.  
  30. {
  31. echo "Nie jestes zalogowany";
  32.  
  33.  
  34.  
  35. }
  36.  
  37. ?>


Teraz będzie dobrze, zjadłem średnik. Zresztą w błędzie jest wszystko dobrze opisane!!
milw0rm
jest taki błąd hah

Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /home/terrory/public_html/Skrypty/Wirtualny/index2.php on line 22

jest błąd tutaj

  1. echo $row[0];


drugi błąd biggrin.gif

  1. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/terrory/public_html/Skrypty/Wirtualny/index2.php on line 11
  2.  
  3. Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given in /home/terrory/public_html/Skrypty/Wirtualny/index2.php on line 13
  4. Zostales zalogowany jako: pacio123Twoje imię brzmi:
  5. Przejdz do strony glównej


czekaj to sprawdze chyba wiem co to za błąd złe argumenty dla mysql, edit: nic z tego
haahh
Już poprawiłem, jednak warto nauczyć się tego, co mówi nam php o błędzie. Mówi nam, że jest błąd na 22 linii, bo pojawia się funkcja 'echo', a nie ma wcześniej średnika.

Napisałem: "sprawdz, czy dałem dobre nazwy tabel itp. itd.". Zmień "SELECT imie FROM user WHERE user_id=$id" na "SELECT imie FROM user WHERE id=$id"

Jeżeli nie to, to już nie wiem biggrin.gif może za bardzo senny jestem i robię wszystko tak jak w ostatnim projekcie. Zmieniamy na:


  1. $r = @mysql_query($q);


i jeszcze:



Sorki.. z przyzwyczajenia używamy mysqli_ zamiast mysql_ i później wychodzą takie numery :/ (żeby nie było też się ciągle uczę, idę spać, jak coś to jutro rano jakieś pytania)
milw0rm
Dzięki wielkie haahh ! pomogłeś oczywiście pochwalam tongue.gif jeszcze raz dzięki

mam tylko jeszcze jedno pytanko jak będę chciał dopisać drugi argument to zrobić nową zmienną np

$a="SELECT nazwisko FROM user WHERE id=$id";
i
$r1 = @mysql_query($a);
$row1=mysql_fetch_array($r1, MYSQLI_NUM);

i pozniej echo $row1 ?
haahh
Staram się :] Sorki, za te problemy, ale przyzwyczajenia były górą i mój kod nie współgrał z twoimi kodem, twoimi danymi itd. Tak jak mówiłem sprawdź zabezpieczenia sesji.

Nie wtedy:


  1. $q = "SELECT imie, nazwisko, wiek FROM user WHERE id='$id'"; //sprawdz, czy dałem dobre nazwy tabel itp. itd.
  2. $r = @mysql_query($q);
  3. $row = mysql_fetch_array($r, MYSQLI_NUM);
  4.  
  5. echo row[0]; //imie
  6. echo row[1]; //nazwisko
  7. echo row[2]; //wiek
  8.  


Ale możesz też robić tak:

  1. $q = "SELECT imie, nazwisko, wiek FROM user WHERE id='$id'"; //sprawdz, czy dałem dobre nazwy tabel itp. itd.
  2. $r = @mysql_query($q);
  3. $row = mysql_fetch_array($r, MYSQL_ASSOC); // TUTAJ ZMIANA!
  4.  
  5. echo row['imie']; //imie
  6. echo row['nazwisko']; //nazwisko
  7. echo row['wiek']; //wiek
  8.  


wtedy jest łatwiej zapamiętać.
milw0rm
Dobra dziękować nie mam więcej pytań jak coś to się odezwę na priv czy coś Dobranoc
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.