Не ў стане абнавіць у MySQL з дапамогай PHP пароль

Такім чынам, я спрабую змяніць пароль карыстальнікаў табліцы, для гэтага я выкарыстоўваю наступны код PHP, але ён не атрымлівае абнаўлення.

<?php
session_start();
$host="localhost";//Host name 
$username="root";//Mysql username 
$password="";//Mysql password 
$db_name="bloodbank";//Database name 
$tbl_name="users";//Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// username ,password and newpassword sent from form 
$username=$_POST['username']; 
$password=$_POST['password']; 
$newpassword=$_POST['newpassword']; 
$sql="UPDATE $tbl_name SET password='$newpassword' WHERE username='$username' and password='$password'";

?>

Затым я паспрабаваў выкарыстаць гэты код, хоць я атрымліваю «Абноўлена паспяхова», на самай справе яна не атрымлівае абнаўляецца ў базе дадзеных, можа хто-небудзь калі ласка, скажыце мне, дзе памылка.

<?php
session_start();
$host="localhost";//Host name 
$username="root";//Mysql username 
$password="";//Mysql password 
$db_name="bloodbank";//Database name 
$tbl_name="users";//Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// username,password and newpassword sent from form 
$username=$_POST['username']; 
$password=$_POST['password']; 
$newpassword=$_POST['newpassword'];
$sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$password'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

if($count==1)
{
$mysql="UPDATE $tbl_name SET password='$newpassword'";
echo "Updated Successfully";
}
else
{
echo "Wrong password or Username";
}
?>
3
@Edwin Lambregts дзякуй вялікі, ён працаваў.
дададзена аўтар manju, крыніца
@Edwin Lambregts дзякуй вялікі, ён працаваў.
дададзена аўтар manju, крыніца
Калі ласка, вы можаце сказаць мне, як гэта зрабіць.
дададзена аўтар manju, крыніца
Калі ласка, вы можаце сказаць мне, як гэта зрабіць.
дададзена аўтар manju, крыніца
без WHERE ўмовы абнаўлення, вы будзеце абнаўляць поле «пароль» ў кожнай радку вашага стала ...
дададзена аўтар Doc, крыніца
без WHERE ўмовы абнаўлення, вы будзеце абнаўляць поле «пароль» ў кожнай радку вашага стала ...
дададзена аўтар Doc, крыніца
Вы карыстаецеся ў састарэлую базы дадзеных API і павінны выкарыстоўваць сучасная замена . Вы таксама <�б> ўразлівыя для -инъекций SQL , што сучасны API палегчыць у абараніць сябе ад.
дададзена аўтар Quentin, крыніца
Вы карыстаецеся ў састарэлую базы дадзеных API і павінны выкарыстоўваць сучасная замена . Вы таксама <�б> ўразлівыя для -инъекций SQL , што сучасны API палегчыць у абараніць сябе ад.
дададзена аўтар Quentin, крыніца
Калі вы збіраецеся паролі крамы, зрабіць гэта бяспечна - не захоўвайце іх у просты тэкст.
дададзена аўтар Quentin, крыніца
Калі вы збіраецеся паролі крамы, зрабіць гэта бяспечна - не захоўвайце іх у просты тэкст.
дададзена аўтар Quentin, крыніца
Гэта, як уяўляецца, дакладна такая ж праблема (захаванне запыту ў пераменным і ня перадаючы яго ў базу дадзеных), як вы прасілі аб ў вашым апошнім пытанні: <�б> Duplicate : unable для ўстаўкі дадзеных у MySQL з дапамогай PHP
дададзена аўтар Quentin, крыніца
Гэта, як уяўляецца, дакладна такая ж праблема (захаванне запыту ў пераменным і ня перадаючы яго ў базу дадзеных), як вы прасілі аб ў вашым апошнім пытанні: <�б> Duplicate : unable для ўстаўкі дадзеных у MySQL з дапамогай PHP
дададзена аўтар Quentin, крыніца
вельмі дрэнна, я бачу шмат SQL ін'екцый сэр мандзю. калі ласка, разгледзіце ўсе каментары вышэйшы за мяне :)
дададзена аўтар tomexsans, крыніца
вельмі дрэнна, я бачу шмат SQL ін'екцый сэр мандзю. калі ласка, разгледзіце ўсе каментары вышэйшы за мяне :)
дададзена аўтар tomexsans, крыніца
дзе выкананне запыту?
дададзена аўтар Bojan Kovacevic, крыніца
дзе выкананне запыту?
дададзена аўтар Bojan Kovacevic, крыніца
Ну, гэта таму, што вы не выконваеце запыт ..
дададзена аўтар Edwin Lambregts, крыніца
@manju калі ласка, прачытайце іншыя адказы тут асцярожна, так як яны заўважылі, SQL/XSS/пароль уразлівасці. :)
дададзена аўтар Edwin Lambregts, крыніца
@manju калі ласка, прачытайце іншыя адказы тут асцярожна, так як яны заўважылі, SQL/XSS/пароль уразлівасці. :)
дададзена аўтар Edwin Lambregts, крыніца
mysql_query ($ MySQL); : P
дададзена аўтар Edwin Lambregts, крыніца
mysql_query ($ MySQL); : P
дададзена аўтар Edwin Lambregts, крыніца
Ну, гэта таму, што вы не выконваеце запыт ..
дададзена аўтар Edwin Lambregts, крыніца
дзе WHERE ў запыце абнаўлення?
дададзена аўтар Faridzs, крыніца
дзе WHERE ў запыце абнаўлення?
дададзена аўтар Faridzs, крыніца

8 адказы

У гэтым кодзе

if($count==1)
{
$mysql="UPDATE $tbl_name SET password='$newpassword'";
echo "Updated Successfully";
}

існуюць наступныя праблемы:

1) з'яўляецца тое, што вы нічога не робіце з SQL вы толькі што пабудаваным - Вы забыліся выканаць запыт, выкарыстоўваючы яго.

2) is that you do not hash the password with a salt - storing passwords in plaintext in your database is SUPER SUPER bad, the first time anyone else gets your database by any means every single one of your users' passwords is on the internet, and now their bank accounts and emails are at risk. Don't think it won't happen, all it takes is one mistake or one thing you've overlooked, and a high proportion of people use one password for everything, so criminals LOVE it when username/password databases are leaked onto the internet. Read http://www.martinstoeckli.ch/php/php.html#bcrypt

3) з'яўляецца тое, што аператар абнаўлення, як напісана, будзе ўсталяваны пароль кожнага радка да значэння ў $ Новый_пароле - Вы забыліся выкарыстоўваць ИНЕК.

4) is that this code is vulnerable to SQL injection, meaning that if a hacker submits SQL code instead of a password the SQL code will be run. One solution is using prepared statements instead. See How can I prevent SQL injection in PHP?

5
дададзена
Дзякуй, я пачатковец у гэтай тэме, будзе рабіць тое, што вы паказалі.
дададзена аўтар manju, крыніца

У гэтым кодзе

if($count==1)
{
$mysql="UPDATE $tbl_name SET password='$newpassword'";
echo "Updated Successfully";
}

існуюць наступныя праблемы:

1) з'яўляецца тое, што вы нічога не робіце з SQL вы толькі што пабудаваным - Вы забыліся выканаць запыт, выкарыстоўваючы яго.

2) is that you do not hash the password with a salt - storing passwords in plaintext in your database is SUPER SUPER bad, the first time anyone else gets your database by any means every single one of your users' passwords is on the internet, and now their bank accounts and emails are at risk. Don't think it won't happen, all it takes is one mistake or one thing you've overlooked, and a high proportion of people use one password for everything, so criminals LOVE it when username/password databases are leaked onto the internet. Read http://www.martinstoeckli.ch/php/php.html#bcrypt

3) з'яўляецца тое, што аператар абнаўлення, як напісана, будзе ўсталяваны пароль кожнага радка да значэння ў $ Новый_пароле - Вы забыліся выкарыстоўваць ИНЕК.

4) is that this code is vulnerable to SQL injection, meaning that if a hacker submits SQL code instead of a password the SQL code will be run. One solution is using prepared statements instead. See How can I prevent SQL injection in PHP?

5
дададзена
Дзякуй, я пачатковец у гэтай тэме, будзе рабіць тое, што вы паказалі.
дададзена аўтар manju, крыніца

<�Моцны> Змена:

$sql="UPDATE $tbl_name SET password='$newpassword' WHERE username='$username' and password='$password'";

if($count==1)
{
$mysql="UPDATE $tbl_name SET password='$newpassword'";
echo "Updated Successfully";
}

<�Моцны> To:

$sql="UPDATE $tbl_name SET password='$newpassword' WHERE username='$username' and password='$password'";
$result=mysql_query($sql);

if($count==1)
{
$mysql="UPDATE $tbl_name SET password='$newpassword'";
$result2=mysql_query($mysql);
echo "Updated Successfully";
}

Прычына, па якой не абнаўляліся таму, што $ SQL запыт не выконваецца.

2
дададзена
Дзякуючы вам вельмі
дададзена аўтар manju, крыніца
Няма праблем. Калі гэта працуе для вас, не забудзьцеся маску ў якасці правільнага адказу. :)
дададзена аўтар Sami Dz Hamida, крыніца

<�Моцны> Змена:

$sql="UPDATE $tbl_name SET password='$newpassword' WHERE username='$username' and password='$password'";

if($count==1)
{
$mysql="UPDATE $tbl_name SET password='$newpassword'";
echo "Updated Successfully";
}

<�Моцны> To:

$sql="UPDATE $tbl_name SET password='$newpassword' WHERE username='$username' and password='$password'";
$result=mysql_query($sql);

if($count==1)
{
$mysql="UPDATE $tbl_name SET password='$newpassword'";
$result2=mysql_query($mysql);
echo "Updated Successfully";
}

Прычына, па якой не абнаўляліся таму, што $ SQL запыт не выконваецца.

2
дададзена
Дзякуючы вам вельмі
дададзена аўтар manju, крыніца
Няма праблем. Калі гэта працуе для вас, не забудзьцеся маску ў якасці правільнага адказу. :)
дададзена аўтар Sami Dz Hamida, крыніца

У сваім першым кодзе вы ніколі не выконвае запыту MySQL. Другі код проста робіць бескарысную SQL запыт. спроба:

<?php
session_start();
$host="localhost";//Host name 
$username="root";//Mysql username 
$password="";//Mysql password 
$db_name="bloodbank";//Database name 
$tbl_name="users";//Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// username ,password and newpassword sent from form 
$username=mysql_real_escape_string($_POST['username']); 
$password=mysql_real_escape_string($_POST['password']); 
$newpassword=mysql_real_escape_string ($_POST['newpassword']); 
$sql="UPDATE $tbl_name SET password='$newpassword' WHERE username='$username' and password='$password'";
$result=mysql_query($sql);
?>
2
дададзена
@manju пераканайцеся, што вы сапраўды прыняць да ўвагі ўсе Patashu публікуемага, калі вы плануеце выкарыстаць гэта на агульнадаступным сайце. Гэта вельмі важна!
дададзена аўтар noamik, крыніца

У сваім першым кодзе вы ніколі не выконвае запыту MySQL. Другі код проста робіць бескарысную SQL запыт. спроба:

<?php
session_start();
$host="localhost";//Host name 
$username="root";//Mysql username 
$password="";//Mysql password 
$db_name="bloodbank";//Database name 
$tbl_name="users";//Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// username ,password and newpassword sent from form 
$username=mysql_real_escape_string($_POST['username']); 
$password=mysql_real_escape_string($_POST['password']); 
$newpassword=mysql_real_escape_string ($_POST['newpassword']); 
$sql="UPDATE $tbl_name SET password='$newpassword' WHERE username='$username' and password='$password'";
$result=mysql_query($sql);
?>
2
дададзена
@manju пераканайцеся, што вы сапраўды прыняць да ўвагі ўсе Patashu публікуемага, калі вы плануеце выкарыстаць гэта на агульнадаступным сайце. Гэта вельмі важна!
дададзена аўтар noamik, крыніца

Вам трэба WHERE ўмова ў вас UPDATE заяву:

mysql="UPDATE $tbl_name SET password='$newpassword' WHERE username='$username' and password='$password'";

А таксама выканаць запыт

$result2=mysql_query($mysql);

З найлепшымі пажаданнямі.

1
дададзена
Вы маеце рацыю Bojane :)
дададзена аўтар mirkobrankovic, крыніца
стары пароль таксама павінны быць правераны, так як у адваротным выпадку ўсё ППЛ можа змяніць пароль для канкрэтнага карыстальніка.
дададзена аўтар Bojan Kovacevic, крыніца

Вам трэба WHERE ўмова ў вас UPDATE заяву:

mysql="UPDATE $tbl_name SET password='$newpassword' WHERE username='$username' and password='$password'";

А таксама выканаць запыт

$result2=mysql_query($mysql);

З найлепшымі пажаданнямі.

1
дададзена
Вы маеце рацыю Bojane :)
дададзена аўтар mirkobrankovic, крыніца
стары пароль таксама павінны быць правераны, так як у адваротным выпадку ўсё ППЛ можа змяніць пароль для канкрэтнага карыстальніка.
дададзена аўтар Bojan Kovacevic, крыніца