Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Blokowanie pustych pól i ustawienie domyślnej treści
Mlody993
post
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 12.02.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
d0m1n1k_
post
Post #2





Grupa: Zarejestrowani
Postów: 208
Pomógł: 3
Dołączył: 13.07.2009
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


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 ;-)

Ten post edytował d0m1n1k_ 2.03.2016, 03:09:26
Go to the top of the page
+Quote Post
Mlody993
post
Post #3





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 12.02.2009

Ostrzeżenie: (0%)
-----


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. (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
MGie
post
Post #4





Grupa: Zarejestrowani
Postów: 31
Pomógł: 5
Dołączył: 29.02.2016

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
d0m1n1k_
post
Post #5





Grupa: Zarejestrowani
Postów: 208
Pomógł: 3
Dołączył: 13.07.2009
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował d0m1n1k_ 2.03.2016, 19:53:25
Go to the top of the page
+Quote Post
Mlody993
post
Post #6





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 12.02.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Mlody993 3.03.2016, 11:03:43
Go to the top of the page
+Quote Post
d0m1n1k_
post
Post #7





Grupa: Zarejestrowani
Postów: 208
Pomógł: 3
Dołączył: 13.07.2009
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


  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. ?>
Go to the top of the page
+Quote Post
Mlody993
post
Post #8





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 12.02.2009

Ostrzeżenie: (0%)
-----


Twój kod niestety nadal u mnie nie działa. (IMG:style_emoticons/default/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.

Ten post edytował Mlody993 3.03.2016, 18:57:57
Go to the top of the page
+Quote Post
MGie
post
Post #9





Grupa: Zarejestrowani
Postów: 31
Pomógł: 5
Dołączył: 29.02.2016

Ostrzeżenie: (0%)
-----


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ę (IMG:style_emoticons/default/thumbsupsmileyanim.gif)

Ten post edytował MGie 3.03.2016, 20:37:43
Go to the top of the page
+Quote Post
Mlody993
post
Post #10





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 12.02.2009

Ostrzeżenie: (0%)
-----


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ę (IMG:style_emoticons/default/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. ;/
Go to the top of the page
+Quote Post
d0m1n1k_
post
Post #11





Grupa: Zarejestrowani
Postów: 208
Pomógł: 3
Dołączył: 13.07.2009
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Mlody993
post
Post #12





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 12.02.2009

Ostrzeżenie: (0%)
-----


Dobra, dziękuje bardzo. Pogłówkowałem i sobie jakoś poradziłem. (IMG:style_emoticons/default/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. (IMG:style_emoticons/default/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.

Ten post edytował Mlody993 7.03.2016, 11:54:11
Go to the top of the page
+Quote Post
MGie
post
Post #13





Grupa: Zarejestrowani
Postów: 31
Pomógł: 5
Dołączył: 29.02.2016

Ostrzeżenie: (0%)
-----


  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


Ten post edytował MGie 7.03.2016, 14:55:36
Go to the top of the page
+Quote Post
Mlody993
post
Post #14





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 12.02.2009

Ostrzeżenie: (0%)
-----


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.. (IMG:style_emoticons/default/sad.gif) Tego już próbowałem.

Dobra, poradziłem sobie jednak (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/biggrin.gif)

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 12:23