Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]mysqli_query dodaje tylko liczby
Forum PHP.pl > Forum > Przedszkole
Neutral
  1.  
  2. <?php
  3. $password=$_POST['password'];
  4. $login=$_POST['login'];
  5.  
  6. $link = mysqli_connect("localhost", "root", "", "mybase");
  7.  
  8.  
  9. $query=mysqli_query($link,"INSERT INTO `moja_tabela` values(null,$login,$password)");
  10.  
  11. mysqli_close($link);
  12. ?>


Jak wpisuję w formularzu jakieś liczby np. 123, 54 to dodaje rekord do bazy. Gdy natomiast wpisuję sobie string np. drzewo, kora to nie dodaje rekordu? Dlaczego liczby dodaje, a string'a już nie?
viking
A jakim typem danych są te kolumny? Mysql może zrobić niejawną konwersję.
Comandeer
Stringi trzeba escape'ować a u Ciebie w zapytaniu nie ma apostrofów. Inna rzecz, że i tak najlepiej od razu poczytać o prepared statements.
daro0
Tu jest to mam nadzieję w miarę łatwy sposób do zrozumienia wyjaśnione:
http://www.w3schools.com/php/php_mysql_pre..._statements.asp

Natomiast hasło należy najpierw zaszyfrować i dopiero później takie zapisać w bazie (w tym przypadku 64 znaki w polu password w bazie.

  1. $salt = 'gSxx8rX4tnbK8Ne';
  2. $password = hash_hmac('sha256', $_POST['password'], $salt);
Comandeer
Raczej zahashować (szyfrowanie da się odwrócić). No i czemu nie użyć do tego dedykowanej funkcji password_hash?
daro0
http://php.net/manual/en/function.password-hash.php

Ta funkcja używa z tego co tu jest Blowfish, natomiast to co ja podałem to w tym przypadku SHA-256. Hashe SHA-224, SHA-256, SHA-384 oraz SHA-512 dają wynik o różnej długości. Z tego co czytałem (wiki) to już np. SHA-1 nie jest zalecane do hashowania haseł (w nowych aplikacjach).

Czy Blowfish ma istotny wpływ na bezpieczeństwo a jeżeli tak to jak to się ma do SHA-224, 256, 384 oraz 512?

A co do zapisywania nie-hashowanych haseł i późniejszego niepoprawnego ich porównania z tym co jest wpisane podczas logowania:

  1. $password1 = '0E00';
  2. $password2 = '0E01';
  3.  
  4. var_dump($password1 == $password2);
  5. // oraz
  6. var_dump($password1 === $password2);


Widać, że w tym pierwszym przypadku przez porównanie bez jeszcze sprawdzania typów (string), można by sobie równie dobrze wpisać i 0E02, 0E03 i można by się włamać na cokolwiek co jest zerem. Zwracam na to uwagę, bo przypadek pierwszy może występować dość często u początkujących. I nie wiem czy mają świadomość z czego to wynika...
Pyton_000
Samo zapisywanie haseł niehashowanych to już jest najgłupszy pomysł na świecie i nie warto rozpatrywać dlaczego nie działa sprawdzanie hasła.

Comandeer
Dla uściślenia: password_hash domyślnie korzysta z najsilniejszego dostępnego dla PHP algorytmu hashującego – na chwilę obecną bcrypt (który jest pochodną Blowfisha).
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.