Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Blokowanie pustych pól i ustawienie domyślnej treści
Forum PHP.pl > Forum > Przedszkole
Mlody993
Witam,
mam taki kod do dodawania komentarzy:

  1. <?php
  2.  
  3. $submit = $_POST['submit'];
  4. $id = $_GET['id'];
  5.  
  6. if (isset($submit))
  7. {
  8. $tytul = $_POST['tytul'];
  9. $autor = $_POST['autor'];
  10. $tresc = $_POST['tresc'];
  11. $ip = $_POST['ip'];
  12.  
  13.  
  14. $polaczenie = @mysql_connect('localhost', 'uzytkownik', 'haslo') or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
  15. $db = @mysql_select_db('baza', $polaczenie) or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
  16. $sql = "insert into komentarze (tytul, autor, tresc, artid, ip, dodany) values ('$tytul', '$autor', '$tresc', '$id', '$ip', NOW())";
  17. $wynik = mysql_query($sql, $polaczenie) or die(mysql_error());
  18. echo "<div align=\"center\" class=\"qw\"><strong><font color=green>Komentarz został dodany poprawnie.</font></strong></div>";
  19. }
  20.  
  21. else
  22. {
  23. echo '<div class=\"qw\"><form method="post" action="">
  24. <table>
  25. <tr><td><input type="hidden" name="ip" value="'.$_SERVER['REMOTE_ADDR'].'" /></td></tr>
  26. <tr><td><input type="hidden" name="tytul" value="0" /></td></tr>
  27.  
  28. <tr><td>Autor: </td></tr>
  29. <tr><td><input type="text" name="autor" value="'.$_SESSION['user'].'" onFocus="clearText" style="color:#39759B; font-weight: bold;" /></td></tr>
  30.  
  31. <tr><td>Treść:</td></tr>
  32. <tr><td><textarea name="tresc" rows="5" cols="40" style="color:#39759B; font-weight: bold;">'.$_POST['tresc'].'</textarea></td></tr>
  33. <tr><td><input type="submit" name="submit" value="Dodaj komentarz!" /></td></tr>
  34.  
  35. </table>
  36. </form></div>';
  37. }
  38.  
  39. ?>


Wcześniej w polu AUTOR > Value było Anonim, zastąpiłem to jednak '.$_SESSION['user'].' ponieważ dodałem logowanie. Chciałbym jednak, aby w polu nadal było wpisane domyślnie ANONIM jeśli użytkownik nie jest zalogowany.

Od dwóch godzin męczę się z dodaniem funkcji, aby wyskakiwał błąd kiedy któreś z pól będzie puste. Np. kiedy ktoś nie wpisze nic w pole AUTOR lub TRESC.

Nie mam pojęcia już gdzie dodać:
if (!empty($autor))

Proszę was o pomoc jak zmodyfikować poprawnie ten kod.
d0m1n1k_
Chodzi Ci o coś takiego?
  1. if(isset($_SESSION['user']) AND !empty($_SESSION['user'])){
  2. $autor = $_SESSION['user'];
  3. }else{
  4. if(isset($_POST['autor']) AND !empty($_POST['autor'])){
  5. $autor = 'Anonim';
  6. }else{
  7. error(); //lub coś i powrót
  8. }
  9. }


Tylko pytanie brzmi czy działasz na id usera który jest zalogowany (wtedy będzie error) czy na nazwie (wtedy zaskoczy).
Jeśli na id usera to moja propozycja byłaby taka, aby pole `autor` w db było w domyśle na null i kod byłaby w else $autor = NULL;
A w polu prezentacji posta pętla:
  1. if($zapytanie_mysql['autor'] == NULL){
  2. $autor = 'Anonim';
  3. }else{
  4. $autor = $zapytanie_mysql['autor'];
  5. }


Mam nadzieję, że o to Ci chodzi ;-)
Mlody993
No właśnie tu pojawia się problem. Gdzie ten kod w ogóle mam wstawić? Sorry w ogóle, ale z 6 lat nic nie robiłem z php i MySQL, chce postawić stronę i wszystko powoli sobie przypominam.

Ogólnie jeśli o logowanie chodzi to dodałem to do stronki z gotowca i powoli to wdrażam w całą stronkę.

Jeśli chodzi o logowanie to gotowca pobrałem stąd:
http://miroslawzelent.pl/kurs-php/logowani...rzykiwanie-sql/

No i nie wiem teraz dlatego czy działam na id usera czy na nazwie. biggrin.gif Wiem, głupio to brzmi, ale tak to na razie wygląda. Powoli wszystko się przypomina, ale tego potrzebuję żeby iść dalej... Bo jak będzie więcej strony gotowe to będzie problem z wdrożeniem tego.
MGie
Proponuję obejrzeć video Zelenta, jak pisał to od początku. Będziesz chociaż mniej więcej będziesz wiedział co się dzieje w "Twoim" kodzie.
d0m1n1k_
Powinno być git. Tak na szybkiego poprawione:

  1. <?php
  2. if (isset($_POST['submit'])){
  3. $id = $_GET['id'];
  4. if(isset($_SESSION['user']) AND !empty($_SESSION['user'])){
  5. $autor = $_SESSION['user'];
  6. }else{
  7. if(isset($_POST['autor']) AND !empty($_POST['autor'])){
  8. $autor = 'Anonim';
  9. }else{
  10. error(); //lub coś i powrót
  11. }
  12. }
  13.  
  14. //Tytuł i Treść będzie wymagana więc nie musisz sprawdzać !empty
  15. $tytul = trim(htmlspecialchars(addslashes($_POST['tytul'])));
  16. $tresc = trim(htmlspecialchars(addslashes($_POST['tresc'])));
  17. $ip = $_POST['ip'];
  18.  
  19. //POŁĄCZENIE NIE POWINNO BYĆ W TAK PIERWOTNYM MIEJSCU. ZRÓB DEFINICJĘ, DODAJ PRZEZ require_once(); I PLIK ZASZYJ GŁĘBOKO.
  20. $polaczenie = @mysql_connect('localhost', 'uzytkownik', 'haslo') or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
  21. $db = @mysql_select_db('baza', $polaczenie) or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
  22.  
  23. $sql = "insert into komentarze (`tytul`, `autor`, `tresc`, `artid`, `ip`, `dodany`) values ('$tytul', '$autor', '$tresc', '$id', '$ip', NOW())";
  24. $wynik = mysql_query($sql, $polaczenie) or die(mysql_error());
  25. echo "<div align=\"center\" class=\"qw\"><strong><font color=green>Komentarz został dodany poprawnie.</font></strong></div>";
  26. }else{
  27. if($zapytanie_mysql['autor'] == NULL){
  28. $autor = 'Anonim';
  29. }else{
  30. $autor = $zapytanie_mysql['autor'];
  31. }
  32.  
  33. echo '<div class=\"qw\"><form method="post" action="">
  34. <table>
  35. <tr><td><input type="hidden" name="ip" value="'.$_SERVER['REMOTE_ADDR'].'" /></td></tr>
  36. <tr><td><input type="hidden" name="tytul" value="0" required/></td></tr>
  37.  
  38. <tr><td>Autor: </td></tr>
  39. <tr><td><input type="text" name="autor" value="' . $autor . '" onFocus="clearText" style="color:#39759B; font-weight: bold;" /></td></tr>
  40.  
  41. <tr><td>Treść:</td></tr>
  42. <tr><td><textarea name="tresc" rows="5" cols="40" style="color:#39759B; font-weight: bold;" required>'.$_POST['tresc'].'</textarea></td></tr>
  43. <tr><td><input type="submit" name="submit" value="Dodaj komentarz!" /></td></tr>
  44.  
  45. </table>
  46. </form></div>';
  47. }
  48. ?>
Mlody993
Wszystko teraz wygląda dobrze.

Jest tylko taki problem, że w polu AUTOR cały czas widnieje treść ANONIM. Nawet jak jestem zalogowany. Jednak do bazy dodaje już mój nick.

Nie wiem czemu, ale przestały też działać polskie znaki. Gdy wpiszę polskie znaki to komentarz nie wyświetla się, a bazie danych widnieje wpis jednak treść jest zerowa.

@edit:
Aha zapomniałem. Jak jestem wylogowany i w polu AUTOR wpiszę jakąś nazwę to w komentarzach nadal widnieje ANONIM.
d0m1n1k_
  1. <?php
  2.  
  3. DEFINE ('DB_HOST','localhost'); //Host
  4. DEFINE ('DB_USER','******'); //Login
  5. DEFINE ('DB_PASS','******'); //Hasło
  6. DEFINE ('DB_NAME','******'); //Nazwa bazy danych
  7.  
  8. $connection = mysql_connect (DB_HOST, DB_USER, DB_PASS) OR die
  9. ('Error - nie połączono z bazą danych<br />' . mysql_error() );
  10. mysql_select_db (DB_NAME) OR die ('Error - nie wybrano bazy danych<br />' . mysql_error() );
  11. $set_typ_coding = mysql_query("SET NAMES 'utf8'");
  12.  
  13.  
  14. if(isset($_POST['submit'])){
  15. $id = $_GET['id'];
  16. $tytul = trim(htmlspecialchars(addslashes($_POST['tytul'])));
  17. $tresc = trim(htmlspecialchars(addslashes($_POST['tresc'])));
  18. $ip = $_POST['ip'];
  19. $add_todb = mysql_query("INSERT INTO komentarze (`tytul`, `autor`, `tresc`, `artid`, `ip`, `dodany`) VALUES ('" . $tytul . "', '" . $autor . "', '" . $tresc . "', '" . $id . "', '" . $ip . "', NOW())") or die(mysql_error());
  20. <div align="center" class="qw">
  21. <strong>
  22. <font color=green>Komentarz został dodany poprawnie.</font>
  23. </strong>
  24. </div>';
  25.  
  26. }else{
  27. if(isset($_SESSION['user']) AND !empty($_SESSION['user'])){
  28. $dane_usera_zalogowanego = mysql_query("<!-- ZAPYTANIE DOTYCZĄCE DANYCH UŻYTKOWNIKA -->");
  29. if(mysql_num_rows($dane_usera_zalogowanego) > 0){
  30. $pokazd_nick = mysql_fetch_array($dane_usera_zalogowanego);
  31. if($pokazd_nick['nick'] == NULL){
  32. $autor = ''; //Użytkownik nie określił swojego nicku
  33. }else{
  34. $autor = $pokazd_nick['nick']; //Lub login, czy inna nazwa kolumny z nazwą użytkownika
  35. }
  36. }
  37. }else{
  38. $autor = 'Anonim';
  39. }
  40.  
  41. <div class="qw">
  42. <form method="post" action="">
  43. <table>
  44. <input type="hidden" name="ip" value="'.$_SERVER['REMOTE_ADDR'].'" />
  45. <input type="hidden" name="tytul" value="0" required/>
  46.  
  47. <tr>
  48. <td>Autor: </td>
  49. </tr>
  50. <tr>
  51. <td>
  52. <input type="text" name="autor" value="' . $autor . '" onFocus="clearText" style="color:#39759B; font-weight: bold;" />
  53. </td>
  54. </tr>
  55. <tr>
  56. <td>Treść:</td>
  57. </tr>
  58. <tr>
  59. <td>
  60. <textarea name="tresc" rows="5" cols="40" style="color:#39759B; font-weight: bold;" required>'.$_POST['tresc'].'</textarea>
  61. </td>
  62. </tr>
  63. <tr>
  64. <td>
  65. <input type="submit" name="submit" value="Dodaj komentarz!" />
  66. </td>
  67. </tr>
  68. </table>
  69. </form>
  70. </div>';
  71. }
  72. ?>
Mlody993
Twój kod niestety nadal u mnie nie działa. sad.gif

Mój kod aktualnie wygląda tak:
  1. <?php
  2.  
  3. if (isset($_POST['submit'])){
  4. $id = $_GET['id'];
  5. if(isset($_SESSION['user']) AND !empty($_SESSION['user'])){
  6. $autor = $_SESSION['user'];
  7. $userid = $_SESSION['userid'];
  8. }else{
  9. if(isset($_POST['autor']) AND !empty($_POST['autor'])){
  10. $autor = 'Anonim';
  11. }else{
  12. error(); //lub coś i powrót
  13. }
  14. }
  15.  
  16. //Tytuł i Treść będzie wymagana więc nie musisz sprawdzać !empty
  17. $tytul = trim(htmlspecialchars(addslashes($_POST['tytul'])));
  18. $tresc = trim(htmlspecialchars(addslashes($_POST['tresc'])));
  19. $set_typ_coding = mysql_query("SET NAMES 'ISO-8859-2'");
  20. $ip = $_POST['ip'];
  21.  
  22. require_once "connect.php";
  23.  
  24. $sql = "insert into komentarze (`tytul`, `autor`, `userid`, `tresc`, `artid`, `ip`, `dodany`) values ('$tytul', '$autor', '$userid', '$tresc', '$id', '$ip', NOW())";
  25. $wynik = mysql_query($sql, $polaczenie) or die(mysql_error());
  26. echo "<table border=\"2\" style=\"border-style: none;\" width=\"500\" align=\"center\"><tr><th style=\"border-color: #6495ED; background-color: #FAF0E6; -moz-border-radius: 6px; border-style: solid;\" align=\"center\"><b><font color=green>Twój komentarz został dodany!</font></b></th></tr></table><br />";
  27. }else{
  28. if($zapytanie_mysql['autor'] == NULL){
  29. $autor = 'Anonim';
  30. }else{
  31. $autor = $zapytanie_mysql['autor'];
  32. }
  33.  
  34. echo '<div class=\"qw\"><form method="post" action="">
  35. <table>
  36. <tr><td><input type="hidden" name="ip" value="'.$_SERVER['REMOTE_ADDR'].'" /></td></tr>
  37. <tr><td><input type="hidden" name="tytul" value="0" required/></td></tr>
  38.  
  39. <tr><td>Autor: </td></tr>
  40. <tr><td><input type="text" name="autor" value="' . $autor . '" readonly="readonly" onFocus="clearText" style="color:#39759B; font-weight: bold;" /></td></tr>
  41.  
  42. <tr><td>Treść:</td></tr>
  43. <tr><td><textarea name="tresc" rows="5" cols="40" style="color:#39759B; font-weight: bold;" required>'.$_POST['tresc'].'</textarea></td></tr>
  44. </table>
  45. <table border="1" style="border-style: none;" width="20" align="center">
  46. <tr>
  47. <th style="border-color: #6495ED; background-color: #FAF0E6; -moz-border-radius: 6px; border-style: solid;" width="100" align="center">
  48. <input type="submit" name="submit" value="Dodaj komentarz" /></th>
  49.  
  50. </form>
  51. </th>
  52. </tr>
  53. </table>
  54.  
  55. </form></div>';
  56. }
  57. ?>




Nadal występuje ten problem, że cały czas w polu widnieje ANONIM nawet jeśli się zaloguje. Ale do bazy zostaje dodany nick zalogowany. Jednak gdy jestem wylogowany i dodam komentarz jako anonim to komentarz jest bez nicku, sama treść :/ do bazy nie dodaje się ten ANONIM. Czyli bez zmian....

Myślałem może aby w bazie dodać po prostu użytkownika (user) ANONIM z userid 0 - w ten sposób każdy komentarz dodany anonimowo dostałby userid = 0 i autor wyświetlany byłby jako ANONIM. Wtedy musiałbym zablokować pole AUTOR (np. readonly).

@edit:
Aha, po dodaniu:
  1. $set_typ_coding = mysql_query("SET NAMES 'ISO-8859-2'");


nadal komentarze są puste po wpisaniu polskich znaków.
To samo po ustawieniu kodowania utf-8.
MGie
Podpowiedź:

  1. //jeżeli utworzona sesja(zalogowany)
  2. if(isset($_SESSION['user']) AND !empty($_SESSION['user'])){
  3. $autor = $_SESSION['user'];
  4. $userid = $_SESSION['userid'];
  5.  
  6. //w przeciwnym wypadku (brak sesji - niezalogowany)
  7. }else{
  8. //jeżeli w formularzu przesłałeś nazwę użytkownika
  9. if(isset($_POST['autor']) AND !empty($_POST['autor'])){
  10. $autor = 'Anonim';
  11.  
  12. //jeżeli w polu autor nie przekazałeś value
  13. }else{
  14. error(); //lub coś i powrót
  15. }
  16. }


Dasz radę thumbsupsmileyanim.gif
Mlody993
No nie wiem czy dam radę. ;-) Znowu od dwóch godzin się męczę z tym i spać nie pójdę do póki nie zrobię biggrin.gif

  1. $id = $_GET['id'];
  2. if(isset($_SESSION['user'])){
  3. $autor = $_SESSION['user'];
  4. $userid = $_SESSION['userid'];
  5. }else{
  6. if(isset($_POST['autor']) AND !empty($_POST['autor'])){
  7. $autor = 'Anonim';
  8. }else{
  9. error(); //lub coś i powrót
  10. }
  11. }


Tutaj usunąłem w $_SESSION i teraz dodaje komentarze jako ANONIM, po zalogowaniu jako osoba zalogowana. Pole jednak musiałem zrobić readonly bo nawet jak wpiszę swoją nazwe "AUTOR" to do bazy zapisuje się i tak ANONIM. Ja już nie mam sił powoli do tego. Wszystko mi wygląda OK, a nie działa.

@ No i nadal problem, jak jestem zalogowany to w polu AUTOR jest cały czas Anonim, ale do bazy dodaje poprawnie.


Problem też nadal z polskimi znakami. ;/
d0m1n1k_
A w którym miejscu masz definicję połączenia z bazą danych?
Poza tym wczoraj o 13:59 przesłałem Ci przepisany od a do z kod.
Zerknij na niego sokolim wzrokiem i przeanalizuj.
Moim skromnym zdaniem nie ma prawa nawalać, chyba że nie zmieniłeś danych dostępowych do bazy danych oraz samego zapytania.

W tym miejscu jako bonus dla Ciebie, nadmienię jedną dość przydatną informację.
Aby to wszystko działało sprawnie pomyśl o relacjach bazy danych.
Z tego co przeczytałem to w sesji utrzymujesz nazwę użytkownika zamiast zmiennej lub czegoś co pozwoli uniezależnić Cię od choćby problemu dwóch userów o innych mailach ale tej samej nazwie/loginie.
Kolejna rzecz to lżej dla twojej bazy będzie trzymać w tabeli komentarzy kolumnę z id(int(11)) użytkonika niż jego nazwą(varchar(255)). Załatwia to też problem j.w.
Ogólnie proponuję trochę lektury dla odświeżenia pamięci ale i życzę wytrwałości.
Mlody993
Dobra, dziękuje bardzo. Pogłówkowałem i sobie jakoś poradziłem. smile.gif

Powstał tylko nowy problem. Jak widać ten gotowiec, którego użyłem jako podstawę nie ma opcji rejestracji. Zrobiłem więc własny skrypt rejestracji.
Skrypt ten korzysta z md5 dla $pass , więc w bazie hasło jest zaszyfrowane. Problem jest tylko taki, że ten system logowania który mam nie rozpoznaje hasła. biggrin.gif

To jest mój plik logowania:
  1. <?php
  2.  
  3.  
  4. if ((!isset($_POST['login'])) || (!isset($_POST['pass'])))
  5. {
  6. header('Location: /login,pl.html');
  7. exit();
  8. }
  9.  
  10. require_once "connect.php";
  11.  
  12. $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
  13. if ($polaczenie->connect_errno!=0)
  14. {
  15. echo "Error: ".$polaczenie->connect_errno;
  16. }
  17. else
  18. {
  19.  
  20. $login = $_POST['login'];
  21. $pass = $_POST['pass'];
  22.  
  23. $login = htmlentities($login, ENT_QUOTES, "UTF-8");
  24. $pass = htmlentities($pass, ENT_QUOTES, "UTF-8");
  25.  
  26. if ($rezultat = @$polaczenie->query(
  27. sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND pass='%s'",
  28. mysqli_real_escape_string($polaczenie,$login),
  29. mysqli_real_escape_string($polaczenie,$pass))))
  30. {
  31. $ilu_userow = $rezultat->num_rows;
  32. if($ilu_userow>0)
  33. {
  34. $_SESSION['zalogowany'] = true;
  35.  
  36. $wiersz = $rezultat->fetch_assoc();
  37. $_SESSION['id'] = $wiersz['id'];
  38. $_SESSION['user'] = $wiersz['user'];
  39. $_SESSION['email'] = $wiersz['email'];
  40. $_SESSION['imie'] = $wiersz['imie'];
  41. $_SESSION['nazwisko'] = $wiersz['nazwisko'];
  42.  
  43. unset($_SESSION['blad']);
  44. $rezultat->free_result();
  45. header('Location: /user,pl.html');
  46.  
  47. } else {
  48.  
  49. $_SESSION['blad'] = '<table border="2" style="border-style: none;" width="500" align="center">
  50. <tr>
  51. <th style="border-color: #6495ED; background-color: #FAF0E6; -moz-border-radius: 6px; border-style: solid;" align="center">
  52. <b>Nieprawidłowy login lub hasło!</b></th>
  53. </tr>
  54. </table><br />';
  55. header('Location: /login,pl.html');
  56.  
  57. }
  58.  
  59. }
  60.  
  61. $polaczenie->close();
  62. }
  63.  
  64. ?>


A tutaj plik login.php:
  1. <p class="ng">Logowanie</p>
  2. <p>Zaloguj się podając swój login i hasło.<br><br></p>
  3.  
  4.  
  5. <?php
  6.  
  7.  
  8. if ((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
  9. {
  10. header('Location: /user,pl.html');
  11. exit();
  12. }
  13.  
  14. ?>
  15. <?php
  16. if(isset($_SESSION['blad'])) echo $_SESSION['blad'];
  17. ?>
  18. <form action="/zaloguj,pl.html" method="post">
  19. <table border="2" style="border-style: none;" width="200" align="center">
  20. <tr>
  21. <th style="border-color: #6495ED; background-color: #FAF0E6; -moz-border-radius: 6px; border-style: solid;" align="center">
  22. Login:</th><th style="border-color: #6495ED; background-color: #FAF0E6; -moz-border-radius: 6px; border-style: solid;" align="center">
  23. <input type="text" name="login" style="color:#39759B; font-weight: bold;" /></th>
  24. </tr>
  25. <tr>
  26. <th style="border-color: #6495ED; background-color: #FAF0E6; -moz-border-radius: 6px; border-style: solid;" align="center">
  27. Hasło:</th>
  28. <th style="border-color: #6495ED; background-color: #FAF0E6; -moz-border-radius: 6px; border-style: solid;" align="center">
  29. <input type="password" name="pass" style="color:#39759B; font-weight: bold;" /></th>
  30. </tr>
  31. </table>
  32. <table border="1" style="border-style: none;" width="20" align="center">
  33. <tr>
  34. <th style="border-color: #6495ED; background-color: #FAF0E6; -moz-border-radius: 6px; border-style: solid;" width="200" align="center">
  35. <input type="submit" value="Zaloguj™" /></th>
  36.  
  37. </form>
  38. </th>
  39. </tr>
  40. </table>


Wiem, że w logowaniu nie ma tego szyfrowania, jednak przy wielu próbach jednak nic nie wychodzi ;/

Próbuje dodać:
$pass = md5($_POST['pass']);
zamiast:
$pass = $_POST['pass'];

Ale wtedy obojętnie co wpisuję podczas logowania to wyskakuje błąd.
MGie
  1. $login = $_POST['login'];
  2. $pass = $_POST['pass'];
  3.  
  4. $login = htmlentities($login, ENT_QUOTES, "UTF-8");
  5. $pass = htmlentities($pass, ENT_QUOTES, "UTF-8");
  6.  
  7. $pass = md5( $pass );
  8.  
  9. if ($rezultat = @$polaczenie->query("SELECT * FROM uzytkownicy WHERE user=$login AND pass=$pass"))


Wyciąganie * nie jest za dobrym rozwiązaniem ( po co Ci na przykład wyciągać hasło? )


Jeżeli chcesz używać md5 to go posól ( wygogluj sobie ).

Ja bym Ci jednak polecił:
Kod
http://php.net/manual/en/function.password-hash.php


Dlaczego?:
zapisz pod zmienną jakiegoś stringa,
zahashuj go i wyświetl md5, a potem tego samego stringa zahashuj np. PASSWORD_BCRYPT,
odśwież stronę kilka razy,
zobaczysz dlaczego md5 jest wypierany.

Najpopularniejsze hashe są w bazach internetowych md5, sprawdź w googlach.


Na czas pisania i testowania aplikacji dobrze jest włączyć wyświetlanie błędów:
Kod
http://forum.php.pl/index.php?showtopic=44868&st=0&start=0
Mlody993
Tak zrobiłem. Przy rejestracji używam:

  1. public function passSalter ($pass) {
  2. $pass = '$@@#$#@$'.$pass.'q2#$3$%##@';
  3. return md5($pass);
  4. }


oraz w formularzu rejestracji:
  1. $pass = user::passSalter($pass);


Twoja podpowiedź:
  1. $login = $_POST['login'];
  2. $pass = $_POST['pass'];
  3.  
  4. $login = htmlentities($login, ENT_QUOTES, "UTF-8");
  5. $pass = htmlentities($pass, ENT_QUOTES, "UTF-8");
  6.  
  7. $pass = md5( $pass );
  8.  
  9. if ($rezultat = @$polaczenie->query("SELECT * FROM uzytkownicy WHERE user=$login AND pass=$pass"))


niestety nie działa.. sad.gif Tego już próbowałem.

Dobra, poradziłem sobie jednak smile.gif

Trzeba było zrobić:
  1. $pass = user::passSalter($pass);


Ale wtedy nie działało... za duże zamieszanie, cztery pliki otwarte i się gubiłem. Dzisiaj na spokojnie zauważyłem, że w pliku logowania nie dodałem linijki:
  1. require '.php';


z plikiem w którym znajduje się klasa do solenia biggrin.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.