2013-05-31 3 views
-3

그래서, 다음과 같은 PHP 코드를 사용하고 있는데, 테이블 사용자의 암호를 변경하려고합니다. 그러나 업데이트되지 않습니다. 내가 "성공적으로 업데이트"얻고 있지만 PHP를 사용하여 MySQL에 암호를 업데이트 할 수 없습니다

<?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"; 
} 
?> 
+2

글쎄, 당신이 쿼리를 실행하지 않기 때문입니다 .. –

+0

당신이 어떻게 할 지 말해 줄 수 있어요? – manju

+0

쿼리 실행 위치는 어디입니까? –

답변

-2

첫 번째 코드에서는 절대로 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); 
?> 
+0

@manju 공개적으로 사용 가능한 웹 사이트에서 이것을 사용하려는 경우 Patashu가 게시 한 모든 것을 계정에 실제로 포함시켜야합니다. 정말 중요합니다! – noamik

5

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

다음과 같은 문제가있다 :

1) 방금 구축 된 SQL에 아무것도 할 수 없다는 것입니다가 - 당신은 쿼리를 실행하는 것을 잊었다 그것을 사용합니다.

2) 소금으로 암호를 해시하지 않는다는 것은 데이터베이스에 일반 텍스트로 암호를 저장하는 것이 SUPER SUPER 나쁜 점입니다. 다른 모든 사람이 사용자의 모든 암호 중 첫 번째로 데이터베이스를 가져 오는 첫 번째 시간입니다. 인터넷에서, 그리고 지금 그들의 은행 계좌와 이메일은 위험에 처해있다. 그것이 일어나지 않을 것이라고 생각하지 마십시오. 하나의 실수 또는 간과 한 것, 많은 사람들이 모든 암호에 하나의 암호를 사용하므로 범죄자는 사용자 이름/암호 데이터베이스가 인터넷에 누출되면 그것을 좋아합니다. . http://www.martinstoeckli.ch/php/php.html#bcrypt

3) 3)라는 말은 update 문장이 EVERY SINGLE ROW의 암호를 $ newpassword의 값으로 설정한다는 것입니다. WHERE 절을 사용하는 것을 잊었습니다.

4)이 코드는 SQL 삽입에 취약하므로 해커가 암호 대신 SQL 코드를 제출하면 SQL 코드가 실행됩니다. 한 가지 해결책은 준비된 문을 대신 사용하는 것입니다.

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

또한 쿼리

$result2=mysql_query($mysql); 

감사를 실행하려면 다음 UPDATE 문에서 조건이 WHERE 당신이 필요로하는 How can I prevent SQL injection in PHP?

+0

고맙다. 나는이 주제를 처음 접했고, 보여준 것을 할 것이다. – manju

1

참조하십시오.

+0

이전 암호도 확인해야합니다. 그렇지 않으면 모든 ppl이 특정 사용자의 암호를 변경할 수 있기 때문입니다. –

+0

당신이 맞아요. Bojane :) – mirkobrankovic

2

변경 :

$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"; 
} 

사람 :

$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"; 
} 

는 IT가 업데이트되지 않은 이유 $sql 쿼리가 실행되지 않았기 때문에입니다.

+0

대단히 고마워요. – manju

+0

문제 없습니다. 이 방법이 효과가 있었다면 정답으로 가면을 잊는 것을 잊지 마십시오. :) –

관련 문제