Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rejestracja
Forum PHP.pl > Forum > Przedszkole
Durkane
  1. <?php
  2.  
  3. require_once "connect.php";
  4.  
  5. function filtruj($zmienna)
  6. {
  7. $zmienna = stripslashes($zmienna); //usuwamy slashe
  8.  
  9. // usuwamy spacje, tagi html oraz niebezpieczne znaki
  10. }
  11.  
  12. if(isset($_POST['rejestruj']))
  13. {
  14. $name = filtruj($_POST['name']);
  15. $surname = filtruj($_POST['surname']);
  16. $pass1 = filtruj($_POST['passwod1']);
  17. $pass2 = filtruj($_POST['password2']);
  18. $email = filtruj($_POST['email']);
  19. $ip = filtruj($_SERVER['REMOTE_ADDR']);
  20. }
  21.  
  22. // sprawdzanie dostepnosci loginu
  23.  
  24. if (mysqli_num_rows(mysqli_query("SELECT email FROM uzytkownicy WHERE email = '".$name."';")) == 0)
  25. {
  26. if ($haslo1 == $haslo2) // sprawdzanie poprawnosci hasel
  27. {
  28. mysqli_query("INSERT INTO 'uzytkownicy' ('imie','nazwisko','haslo','email','rejestracja','logowanie','ip')
  29. VALUES ('".$name."','".$surname."','".md5($pass1)."','".$email."','".time()."','".time()."'.'".$ip."');");
  30. echo "Konto zostało utworzone pomyślnie !";
  31. }
  32. else
  33. {
  34. echo "Hasła nie są takie same!";
  35. }
  36. }
  37. else
  38. {
  39. echo "Podany login jest już zajęty.";
  40. }


Mam taki kod do rejestracji, po podaniu danych w formularzu i wciśnięciu przycisku wyskakuje, że konto zostało utworzone pomyślnie. Jednak nic nie zostaje dodane do bazy danych :/ Drugi problem to polskie znaki, baze danych mam ustawioną na utf8_general_ci tak samo tabele, na stronie mam ustawione utf8 i mimo to zamiast ą,ę itd pojawia się "?". Ma ktoś rozwiązanie tego? Bo z tym się już borykam z tydzień ;/
goartur
Zrob :

  1. echo "INSERT INTO 'uzytkownicy' ('imie','nazwisko','haslo','email','rejestracja','logowanie','ip')
  2. VALUES ('".$name."','".$surname."','".md5($pass1)."','".$email."','".time()."','".time()."'.'".$ip."')";


Wklej do sql w phpmyadmin, powinno zwrocic blad, skopiuj to i wyslij tutaj.
viking
  1. $pass1 = filtruj($_POST['passwod1']);

Brakuje r.
A poza tym. Hasła nie md5 tylko password_hash() minimum. Nie usuwaj znaków z hasła użytkownika. Sprawdzaj i obsługuj błędy z bazy. Wyrzuć tą śmieszną funkcję filtruj i stosuj prepared statements.
Durkane
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'echo "INSERT INTO 'uzytkownicy' ('imie','nazwisko','haslo','email','rejestracja'' at line 1

To dostaje, gdy wklejam do SQL w phpmyadmin.

Jeżeli dobrze rozumiem to mam zrobić z tym password_hash()

  1. $hash = password_hash($pass1, PASSWORD_BCRYPT);

?
viking
Tak, pamiętaj żeby odpowiednią długość pola ustawić w bazie.
Durkane
Ok ustawione mam VARCHAR(255), więc raczej jest ok smile.gif Tylko dalej problem mam z polskimi znakami i dodawaniem do bazy danych wszystkich podanych wartości :/

  1.  
  2. <?php
  3.  
  4. require_once "connect.php";
  5.  
  6.  
  7. $name = $_POST['name'];
  8. $surname = $_POST['surname'];
  9. $pass1 = $_POST['password1'];
  10. $pass2 = $_POST['password2'];
  11. $email = $_POST['email'];
  12. $ip = $_SERVER['REMOTE_ADDR'];
  13. $hash = password_hash($pass1, PASSWORD_BCRYPT)
  14.  
  15. $query = $pdo->prepare("SELECT 'email' FROM 'uzytkownicy' WHERE 'email' = :email");
  16. $query->bindValue(':email',$email);
  17. $query->execute();
  18.  
  19. // sprawdzanie dostepnosci loginu
  20.  
  21. if (mysqli_num_rows($query == 0)
  22. {
  23. if ($haslo1 == $haslo2) // sprawdzanie poprawnosci hasel
  24. {
  25. mysqli_query("INSERT INTO 'uzytkownicy' ('imie','nazwisko','haslo','email','rejestracja','logowanie','ip')
  26. VALUES ('".$name."','".$surname."','".$hash."','".$email."','".time()."','".time()."'.'".$ip."');");
  27. echo "Konto zostało utworzone pomyślnie !";
  28. }
  29. else
  30. {
  31. echo "Hasła nie są takie same!";
  32. }
  33. }
  34. else
  35. {
  36. echo "Podany login jest już zajęty.";
  37. }


Kod po zmianie. Proszę też o opinię na temat pdo, czy dobrze to ustawione i czy tak samo ustawiać dla dodawania danych do bazy (szczerze przyznam, że tutaj nie wiem jak to dokładnie ustawić).
viking
Jak PDO to nie mysqli_query.
http://php.net/manual/en/mysqli.error.php tu masz jak odczytać błąd. W PDO przechwytuj wyjątki.

Dla połączenia:
  1. $pdo = new PDO(
  2. 'mysql:host=hostname;dbname=dbname',
  3. 'username',
  4. 'password',
  5. array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
  6. );
Durkane
hm.. mam taki błąd Fatal error: Call to undefined function password_hash(), czyli, że nie obsługuję tej funkcji serwer?

Zmieniłem z pdo na
  1. $query = $mysqli->prepare("SELECT 'email' FROM `uzytkownicy` WHERE `email` = ?");
  2. $query->bind_param('s',$email);
  3. $query->execute();


Bo jeszcze za głupi jestem na kombinowanie z tym pdo biggrin.gif
viking
Czyli masz archaiczna wersję PHP starszą niż 5.5. Jeśli to local zrób aktualizację, na serwerze sprawdź czy nie ma nowszej.
Durkane
Jest to darmowy host friko.pl, który ma PHP 5.2 ... Chyba przeniosę się na cba.pl tam mają 5.5. Z PDO będę kombinował później popatrzę jakieś przykłady, poradniki i wtedy najwyżej tutaj napiszęsmile.gif Zaraz przeniosę wszystko na cba.pl i zobaczę czy będzie rejestrować czy nie.

Aktualny problem to Fatal error: Call to a member function prepare() on a non-object oraz brak polskich znaków, ustawiam w bazie danych i utf8_polish_ci i general_ci i dalej nie wyświetla polskich znaków :/
viking
Pokaż connect.php i w jaki sposób nawiazujesz połaczenie.
Durkane
Dobra już nie ważne wróciłem do starego sposobu biggrin.gif potem będę kombinował z pdo smile.gif Na razie to czym chce się zająć to rejestracja, która nie działa : / w dalszym ciągu nic nie dodaje do bazy danych.

EDIT: Tam nigdzie nie zdefiniowałem wcześniej $mysqli, więc dlatego taki błąd miałem smile.gif Poczytam później o tym dokładnie.
viking
Tu nie ma co kombinować. PDO jest banalne jak pójście do sklepu po piwo. Jak masz to zrobić niech będzie od razu w porządku. Poczytaj mój artykuł ze stopki albo przykład użycia z https://wwwgo.pl/advice/show/3/korzystam_z_...ed._dlaczego%3F

Samym bindowaniem sprawisz że to otwieranie i zamykanie " już połowę błędów usunie. No ale musisz do tego nawiazać wczesniej połączenie wink.gif
Durkane
Łączenie z bazą danych
  1. <?php
  2. $dbh = new PDO('mysql:host=mysql.cba.pl;dbname=spisludnosci_cba_pl',$user,$pass,
  3. array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
  4. $user="";
  5. $pass="";
  6. ?>

Logowanie
  1. <?php
  2.  
  3. if(!isset($_POST['login']) || !isset($_POST['password']))
  4. {
  5. header('Location: index.php');
  6. exit();
  7. }
  8. require_once "connect.php";
  9. $sql = "SELECT * FROM uzytkownicy WHERE email=? AND haslo=?";
  10. if($dbh->connect_errno!=0)
  11. {
  12. echo "Error: ". $polaczenie->connect_errno;
  13. }
  14. else
  15. {
  16. $login=$_POST['login'];
  17. $password=$_POST['password'];
  18.  
  19. $login=htmlentities($login,ENT_QUOTES, "UTF-8");
  20. $password=htmlentities($password,ENT_QUOTES, "UTF-8");
  21.  
  22. if ($rezultat = @$polaczenie->$sql)
  23. {
  24. $sth=$dbh->prepare($sql);
  25. $sth->bindParam(2,$_POST['email'],$_POST['password'])
  26. $sth->execute();
  27.  
  28. $ilu_userow = $rezultat->num_rows;
  29.  
  30. if($ilu_userow > 0)
  31. {
  32. $_SESSION['logged'] = true;
  33.  
  34. $result = $sth->fetchAll();
  35.  
  36. $_SESSION['id'] = $result['id'];
  37. $_SESSION['name'] = $result['imie'];
  38. $_SESSION['surname'] = $result['nazwisko'];
  39. $_SESSION['email'] = $result['email'];
  40.  
  41. unset($_SESION['blad']);
  42. $rezultat->free_result();
  43. header('Location:index2.php');
  44.  
  45. }
  46. else
  47. {
  48. $_SESSION['blad'] = 1;
  49. header('Location:index.php');
  50. }
  51. }
  52. $polaczenie->close();
  53. }
  54.  
  55.  
  56. ?>


Co zrobiłem tutaj nie tak stosując PDO ? Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1045] Access denied for user ''@'127.0.0.1' (using password: YES)' in /virtual/spisludnosci.cba.pl/connect.php:3 Stack trace: #0 /virtual/spisludnosci.cba.pl/connect.php(3): PDO->__construct('mysql:host=mysq...', NULL, NULL, Array) #1 /virtual/spisludnosci.cba.pl/zaloguj.php(9): require_once('/virtual/spislu...') #2 {main} thrown in /virtual/spisludnosci.cba.pl/connect.php on line 3
nospor
Nie przekazales $user
Durkane
Już to sam naprawiłem ;d Teraz mam tylko Call to a member function close() on a non-object i zastanawiam się czy to
  1. $polaczenie->close();

Jest mi teraz potrzebne, czy skasować.
nospor
Przeciez nie masz juz obiektu $polaczenie
Durkane
ah no tak teraz mam $dbh tongue.gif A czy w PDO używa się również close do zamknięcia połączenia? Bo mam komunikat Call to undefined method PDO::close()

EDIT: Już sam znalazłem smile.gif Ale dziękuje za pomoc.

Tylko teraz taki problem, że nie loguje mnie tylko wyświetla pustą stronę :/
viking
Co to jest:
$rezultat = @$polaczenie->$sql

Poza tym zapomnij o @. Nigdy przenigdy nie używaj w kodzie. Raz na milion może być przydatne ale na pewno nie na tym poziomie jeszcze.
Durkane
Teraz jest $rezultat = $dbh->$sql, czyli jeżeli mamy połączenie z bazą danych $dbh to wysyła nam do niej zapytanie zawarte w $sql.

Połączenie mam tak
  1. <?php
  2. $dbh = new PDO('mysql:host=mysql.cba.pl;dbname=spisludnosci_cba_pl','durkane12','*********',
  3. array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
  4. ?>


A cały kod do logowania wygląda tak :

  1. <?php
  2.  
  3. if(!isset($_POST['login']) || !isset($_POST['password']))
  4. {
  5. header('Location: index.php');
  6. exit();
  7. }
  8. require_once "connect.php";
  9.  
  10. if($dbh->connect_errno!=0)
  11. {
  12. echo "Error: ". $dbh->connect_errno;
  13. }
  14. else
  15. {
  16. $login=$_POST['login'];
  17. $password=$_POST['password'];
  18.  
  19. $login=htmlentities($login,ENT_QUOTES, "UTF-8");
  20. $password=htmlentities($password,ENT_QUOTES, "UTF-8");
  21.  
  22. $sql = "SELECT * FROM uzytkownicy WHERE email=? AND haslo=?";
  23. $sth=$dbh->prepare($sql);
  24. $sth->bindParam(2,$login,$password);
  25. $sth->execute();
  26.  
  27. if ($rezultat = @$dbh->$sql)
  28. {
  29.  
  30.  
  31. $ilu_userow = $rezultat->num_rows;
  32.  
  33. if($ilu_userow > 0)
  34. {
  35. $_SESSION['logged'] = true;
  36.  
  37. $result = $sth->fetchAll();
  38.  
  39. $_SESSION['id'] = $result['id'];
  40. $_SESSION['name'] = $result['imie'];
  41. $_SESSION['surname'] = $result['nazwisko'];
  42. $_SESSION['email'] = $result['email'];
  43.  
  44. unset($_SESION['blad']);
  45. $rezultat->free_result();
  46. header('Location:index2.php');
  47.  
  48. }
  49. else
  50. {
  51. $_SESSION['blad'] = 1;
  52. header('Location:index.php');
  53. }
  54. }
  55. $dbh = null;
  56. }
  57.  
  58.  
  59. ?>
viking
A w jakiej dokumentacji tak było? Zapytania wykonuje się przez query, exec, prepare->execute.
Durkane
Zjadłem exec biggrin.gif Ale i tak i tak wyświetla pustą stronę "zaloguj.php" zamiast logować :/

  1. <?php
  2.  
  3. if(!isset($_POST['login']) || !isset($_POST['password']))
  4. {
  5. header('Location: index.php');
  6. exit();
  7. }
  8. require_once "connect.php";
  9.  
  10. if($dbh->connect_errno!=0)
  11. {
  12. echo "Error: ". $dbh->connect_errno;
  13. }
  14. else
  15. {
  16. $login=$_POST['login'];
  17. $password=$_POST['password'];
  18.  
  19. $login=htmlentities($login,ENT_QUOTES, "UTF-8");
  20. $password=htmlentities($password,ENT_QUOTES, "UTF-8");
  21.  
  22. $sql = "SELECT * FROM uzytkownicy WHERE email=:email AND haslo=:pass";
  23. $sth=$dbh->prepare($sql);
  24. $sth->bindParam(':email',$login);
  25. $sth->bindParam(':pass',$password);
  26. $sth->execute();
  27.  
  28. if ($rezultat = $dbh->exec($sql))
  29. {
  30.  
  31.  
  32. $ilu_userow = $rezultat->num_rows;
  33.  
  34. if($ilu_userow > 0)
  35. {
  36. $_SESSION['logged'] = true;
  37.  
  38. $result = $sth->fetchAll();
  39.  
  40. $_SESSION['id'] = $result['id'];
  41. $_SESSION['name'] = $result['imie'];
  42. $_SESSION['surname'] = $result['nazwisko'];
  43. $_SESSION['email'] = $result['email'];
  44.  
  45. unset($_SESION['blad']);
  46. $rezultat->free_result();
  47. header('Location:index2.php');
  48.  
  49. }
  50. else
  51. {
  52. $_SESSION['blad'] = 1;
  53. header('Location:index.php');
  54. }
  55. }
  56. $dbh = null;
  57. }
  58.  
  59.  
  60. ?>
nospor
Kurcze,no ale czytaj kod, ktory sam tworzysz....

Toc pare linii wczesniej juz wykonujesz to zapytanie:
$sth=$dbh->prepare($sql);
$sth->bindParam(':email',$login);
$sth->bindParam(':pass',$password);
$sth->execute();

Robienie potem exec w IF jest totalnie bezsensu :/
Skoro wykonales zapytanie, to teraz pobierz rekord ktory ono ci zwraca i bedziesz wiedzial czy znalazlo usera czy nie.
Durkane
  1. <?php
  2.  
  3. if(!isset($_POST['login']) || !isset($_POST['password']))
  4. {
  5. header('Location: index.php');
  6. exit();
  7. }
  8. require_once "connect.php";
  9.  
  10. if($dbh->connect_errno!=0)
  11. {
  12. echo "Error: ". $dbh->connect_errno;
  13. }
  14. else
  15. {
  16. $login=$_POST['login'];
  17. $password=$_POST['password'];
  18.  
  19. $login=htmlentities($login,ENT_QUOTES, "UTF-8");
  20. $password=htmlentities($password,ENT_QUOTES, "UTF-8");
  21.  
  22.  
  23.  
  24.  
  25. if (!empty($login) && !empty($password))
  26. {
  27. $sql = "SELECT * FROM uzytkownicy WHERE email=:email AND haslo=:pass";
  28. $sth=$dbh->prepare($sql);
  29. $sth->bindParam(':email',$login);
  30. $sth->bindParam(':pass',$password);
  31. $sth->execute();
  32.  
  33. $rezultat = $sth->fetchAll();
  34.  
  35. if($rezultat > 0)
  36. {
  37. $_SESSION['logged'] = true;
  38.  
  39. $result = $sth->fetchAll();
  40.  
  41. $_SESSION['id'] = $result['id'];
  42. $_SESSION['name'] = $result['imie'];
  43. $_SESSION['surname'] = $result['nazwisko'];
  44. $_SESSION['email'] = $result['email'];
  45.  
  46. unset($_SESION['blad']);
  47. header('Location:index2.php');
  48.  
  49. }
  50. else
  51. {
  52. $_SESSION['blad'] = 1;
  53. header('Location:index.php');
  54. }
  55. }
  56. $dbh = null;
  57. }
  58.  
  59.  
  60. ?>

Sorki za takie błędy, ale widocznie oglądałem złe poradniki i takie błędne "nawyki" są. Ale powoli dzięki pomocy zaczynam robić inaczej wszystko smile.gif
Przerobiłem na takie coś, jednak teraz wywala mi, że błędne dane logowana.

EDIT: ok zalogowało mnie jednak nie pobiera danych :/ tzn. Powinno pobrać dane imie,nazwisko,email i je wyświetlić. Jednak niestety tego nie robi, są puste pola.
viking
Dlaczego 2x przypisujesz to samo? $rezultat i $result. fetchAll zwraca tablicę rekordów, fetch() pojedyncze dane ze zbioru. Nie wiem skąd ty to bierzesz ale w dokumentacji PDO jest cała masa działających przykładów i to chyba jeden z najlepiej udokumentowanych komponentów. Wystarczy skopiować. Poza tym dlaczego znowu wróciłeś do htmlentities? W czym to ma pomóc na takim etapie?
Durkane
htmlentities był cały czas tongue.gif Z tym,że daje dwa razy fetch to zauważyłem po wstawieniu kodu tutaj smile.gif Więc już zmienione i dalej nie wyświetla danych użytkownika.
nospor
Bo raz masz $rezultat a raz $result

Zanim napiszesz kolejnego posta, zastosuj sie prosze do tego tematu
Temat: Jak poprawnie zadac pytanie oraz przygotowac srodowisko pracy

Teraz bez sensu co 5 minut poprawiac ci blach bledy. Sam powininies moc je widziec i analizowac.
Durkane
Ok przeanalizowałem wszystko sam i zmieniłem kod. Jedyny problem jest taki, że gdy chce się zalogować to cały czas wyskakuje komunikat o błędnych danych logowania mimo,że są odpowiednie. Ja jako osoba początkująca już nie wiem co jest nie tak.
  1. <?php
  2. ini_set('display_errors','1');
  3. if(!isset($_POST['login']) || !isset($_POST['password']))
  4. {
  5. header('Location: index.php');
  6. exit();
  7. }
  8. require_once "connect.php";
  9.  
  10. if($dbh->connect_errno!=0)
  11. {
  12. echo "Error: ". $dbh->connect_errno;
  13. }
  14. else
  15. {
  16. try
  17. {
  18. if (empty($_POST['login']) && empty($_POST['password']))
  19. {
  20. $_SESSION['blad'] = 1;
  21. header('Location:index.php');
  22. }
  23. else
  24. {
  25. $username = filter_var($_POST['login'], FILTER_SANITIZE_STRING);
  26. $password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
  27. $password = sha1($password);
  28.  
  29.  
  30. $sth=$dbh->prepare("SELECT * FROM uzytkownicy WHERE email=:email AND haslo=:pass");
  31. $sth->bindParam(':email',$username);
  32. $sth->bindParam(':pass',$password);
  33. $sth->execute();
  34.  
  35. $result = $sth->fetchAll();
  36. }
  37. if(count($result) == false)
  38. {
  39. $_SESSION['blad'] = 1;
  40. header('Location:index.php');
  41. }
  42. else
  43. {
  44. foreach($result as $row)
  45. {
  46. $_SESSION['logged'] = true;
  47. $_SESSION['id'] = $row['id'];
  48. $_SESSION['name'] = $row['imie'];
  49. $_SESSION['surname'] = $row['nazwisko'];
  50. $_SESSION['email'] = $row['email'];
  51.  
  52. unset($_SESION['blad']);
  53. header('Location:index2.php');
  54. }
  55. return $_SESSION['id'];
  56. return $_SESSION['name'];
  57. return $_SESSION['surname'];
  58. return $_SESSION['email'];
  59. }
  60. }
  61. catch(Exception $e)
  62. {
  63. echo "Nie możemy w tej chwili wykonać operacji logowania. Proszę spróbować później.";
  64. }
  65. $dbh = null;
  66. }
  67.  
  68.  
  69. ?>


EDIT: Ok już sam załatwiłem sprawęsmile.gif okazało się,że po przypisaniu do zmiennej danych przesyłanych przez użytkownika podczas logowania coś się psuło i dawało złe dane smile.gif Ustawiłem bezpośrednio do zapytania $_POST i poszło smile.gif
nospor
Ok, to jeszcze wyjasnij nam co to jest:
return $_SESSION['id'];
return $_SESSION['name'];
return $_SESSION['surname'];
return $_SESSION['email'];
smile.gif
Durkane
To już nic biggrin.gif skasowane zostało smile.gif Myślałem, że trzeba wyciągnąć dane żeby później móc ich użyć,ale jednak nie było takiej potrzeby smile.gif
Pytanie mam do tego
  1. <?php
  2. require_once "connect.php";
  3.  
  4. if($dbh->connect_errno!=0)
  5. {
  6. echo "Error: ". $dbh->connect_errno;
  7. }
  8. else
  9. {
  10. try
  11. {
  12. $sth=$dbh->prepare("SELECT * FROM Spis WHERE ID=:id");
  13. $sth->bindParam(':id',$_GET['ID']);
  14. $sth->execute();
  15. $result = $sth->fetchAll(PDO::FETCH_ASSOC);
  16.  
  17. if($sth->num_rows>0)
  18. {
  19. foreach($result as $row)
  20. {
  21. $nrmap = $row['Sekcja'];
  22. $gifs = array(1=>'<img src="images/img.png" class="img-responsive" style="width:250px; height:250px;"
  23. />',2=>'<img src="images/img2.png" class="img-responsive" style="width:250px; height:250px;"/>');
  24. echo '
  25. <ul id="table">
  26. <li class="column">
  27. <h4>'.$row['Imie'].' '.$row['Nazwisko'].'</h4>
  28. <ul>
  29. <li><b class="pull-left" style="padding:3px; font-size:15px;">Ulica:</b><p>'.$row['Ulica'].'</p></li>
  30. <li><b class="pull-left" style="padding:3px; font-size:15px;">Numer domu:</b>
  31. <p>'.$row['Nr_domu'].'</p></li>
  32. <li><b class="pull-left" style="padding:3px; font-size:15px;">Numer mieszkania:</b>
  33. <p>'.$row['Nr_mieszkania'].'</p></li>
  34. <li><b class="pull-left" style="padding:3px; font-size:15px;">Telefon:</b><p>'.$row['Telefon'].'</p>
  35. </li>
  36. <li><b class="pull-left" style="padding:3px; font-size:15px;">Pesel:</b><p>'.$row['Pesel'].'</p></li>
  37. <li><b style="font-size: 15px; padding:3px;">Przybliżone położenie: </b></br>';
  38. if(array_key_exists($nrmap, $gifs))
  39. {
  40. echo $gifs[$nrmap];
  41. }
  42. echo '</li>
  43. <li><a class="btn btn-danger pull-right" style="margin: 10px;" href="index2.php">Powrót</a></li>
  44. </ul>
  45. </li>
  46. </ul>';
  47.  
  48. }
  49. }
  50. else
  51. {
  52. echo "Błąd z połączeniem.";
  53. }
  54. }
  55. catch(Exception $e)
  56. {
  57. echo "Nie możemy w tej chwili wyświetlić spisu. Proszę spróbować później.";
  58. }
  59. }
  60.  
  61.  
  62. ?>


Wykonuje się ten kod jednak zamiast wyświetlać dane wszystkie to po prostu wyświetla
  1. echo "Błąd z połączeniem.";

Nie wiem czemu,ale tutaj na forum jak wrzucam to się rozjeżdża kod tongue.gif
viking
http://php.net/manual/en/class.pdostatement.php
A widzisz gdzieś num_rows?

  1. if (count($result) > 0)
Durkane
No nie widzę,ale i count nie działa, więc spróbowałem z num_rows. Niestety nic z tych rzeczy nie wykonuje wyświetlania elementów z bazy danych :/
viking
No to var_dump($result);
Durkane
array(0) { } Błąd z połączeniem.

Hm... dziwne. Bo w Spis mam wpisane rekordy :/ Jak dla mnie to wszystko jest ok napisane.
nospor
var_dump($_GET['ID']);
Durkane
NULL Błąd z połączeniem.

ID pobieram z bazy
  1. <a href='dane.php?id=".$row['ID']."'>Pokaż dane</a>


I w bazie danych jest ID
nospor
Widzisz roznice miedzy id a ID ? W url dajesz id a w GET szukasz ID....

Po raz ostatni odsylam cie do
Temat: Jak poprawnie zadac pytanie oraz przygotowac srodowisko pracy
Jak sie nie zastosujesz - temat zamkne. Naprawde nie jest nasza rolą co 2 minuty mowic ci zrob var_dump :/
Durkane
Ah.. ok dzięki smile.gif Wiem, że nie jest to waszą rolą, tylko są to wasze dobre chęci pomóc komuś smile.gif Patrzyłem na to row['ID'] zamiast na tamto obok, mój błąd. Dlatego też przydaje się spojrzenie innej osoby.

Dziękuje bardzo za pomoc smile.gif Jeżeli będę miał jakiś problem ponownie to sam będę robił var_dump i inne rzeczy żeby nie zawracać głowy głupotami smile.gif

Dzięki jeszcze raz i pozdrawiam.
nospor
var_dump to tylko jedna z rzeczy jakie masz robic... W linku do ktorego dwa razy cie odeslalem, masz cala liste rzeczy, ktora masz zrobic!
Jest tam miedzy innymi wyswietlanie wszystkich bledow. Wowczas takie literowki bedziesz widziaj od razu na ekranie jakie bledy. Wiec w koncu przeczytaj ten temat i sie do niego zastosuj. Normalnie czuje sie jakbym gadal do dwulatka.... tongue.gif
Durkane
Przeczytałem go i do innych dokumentów to zastosowałem,a do tego jednego nie. Widocznie mi umknął gdzieś bo robiłem to wszystko po 24h pracy i tylko kilku godzinach snu. Już sobie ten link dałem do ulubionych żeby mieć na przyszłość, dzięki jeszcze raz smile.gif

EDIT: Jeszcze jeden mały problem i pytanko smile.gif użyłem password_hash() i teraz nie wiem gdzie wstawić password_verify() bo gdzie bym nie wstawił w pliku logowania to i tak i tak krzyczy,że złe hasło :/

  1. <?php
  2. ini_set('display_errors','1');
  3. if(!isset($_POST['login']) || !isset($_POST['password']))
  4. {
  5. header('Location: index.php');
  6. exit();
  7. }
  8. require_once "connect.php";
  9.  
  10. if($dbh->connect_errno!=0)
  11. {
  12. echo "Error: ". $dbh->connect_errno;
  13. }
  14. else
  15. {
  16. try
  17. {
  18. if (empty($_POST['login']) && empty($_POST['password']))
  19. {
  20. $_SESSION['blad'] = 1;
  21. header('Location:index.php');
  22. }
  23. else
  24. {
  25. $sth=$dbh->prepare("SELECT id,imie,nazwisko,email, haslo FROM uzytkownicy WHERE email=:email");
  26. $sth->bindParam(':email',$_POST['login']);
  27. $sth->execute();
  28.  
  29. $result = $sth->fetchAll(PDO::FETCH_ASSOC);
  30. }
  31. if(count($result) == false)
  32. {
  33. $_SESSION['blad'] = 1;
  34. header('Location:index.php');
  35. }
  36. else
  37. {
  38. $validpassword = password_verify($_POST['password'],$result['haslo']);
  39. if($validpassword)
  40. {
  41.  
  42. $_SESSION['logged'] = true;
  43. $_SESSION['id'] = $result['id'];
  44. $_SESSION['name'] = $result['imie'];
  45. $_SESSION['surname'] = $result['nazwisko'];
  46. $_SESSION['email'] = $result['email'];
  47.  
  48. unset($_SESION['blad']);
  49. header('Location:index2.php');
  50. }
  51.  
  52. }
  53. }
  54. catch(Exception $e)
  55. {
  56. echo "Nie możemy w tej chwili wykonać operacji logowania. Proszę spróbować później.";
  57. }
  58. $dbh = null;
  59. }
  60.  
  61.  
  62. ?>


Wykombinowałem takie coś,ale nie działa niestety ;/
nospor
zamykam. 100 razy prosic niebede
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.