2011-08-20 4 views
-1

여기 내 코드가 있습니다. 왜 작동하지 않는지 몇 시간 동안보고 있었고, 알아낼 수있는 사람을 가리키는 이유가 없습니다. 변수는 잘 전달되고 서버 연결이 이루어집니다. 브라우저가 제공하는 오류 메시지는 다음과 같습니다.PHP는 업데이트/삽입하지 않을 것입니다.

SQL 구문에 오류가 있습니다. '사용자 이름', 'Saturday August of August 02:02:22 PM', 'first', 'last', 'ssn'2 행 근처에서 사용할 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오.

변수 데이터를 변수 이름으로 바꿔서 아이디어를 얻을 수 있으므로 처음에는 브라우저에 실제로 입력 한 이름이 표시됩니다.

감사합니다.

$HTTP_COOKIE_VARS['username'] = $username; 
$email = $_REQUEST['email']; 
$Todaysdate = date('l jS \of F Y h:i:s A'); 
$firstname = $_REQUEST['firstname']; 
$lastname = $_REQUEST['lastname']; 
$ssn = $_REQUEST['ssn']; 
$street = $_REQUEST['street']; 
$city = $_REQUEST['city']; 
$zip = $_REQUEST['zip']; 
$phone1 = $_REQUEST['phone1']; 
$phone2 = $_REQUEST['phone2']; 
$hdhas = $_REQUEST['hdhas']; 
$mi= $_REQUEST['mi']; 





$query = ("INSERT INTO Members (username, email, todaysdate, firstname, lastname, ssn,  street, city, zip, phone1, phone2, hdhas, mi) 
VALUES('$username','$email', '$Todaysdate', '$firstname', '$lastname', '$ssn', '$street', '$city', '$zip', '$phone1', '$phone2', '$hdhas', '$mi')"); 



$checkuser = mysql_query("SELECT username FROM Members WHERE username='$username'"); 


if(mysql_num_rows($checkuser)>0) 
{ 
mysql_query("UPDATE Members SET email='$email', username='$username', todaysdate='$Todaysdate', firstname='$firstname', lastname='$lastname', ssn='$ssn', street='$street', city='$city', zip='$zip', phone1='$phone1', phone2='$phone2', hdhas='$hdhas', mi='$mi' WHERE username = '$username'"); 
} 

else { 
mysql_query($query); 
} 

mysql_query($query) or die(mysql_error()); 
mysql_close(); 
+7

'$ email'은 (는) 고유 한 전체 쿼리입니다. 또한, 중요한 읽기 : http://php.net/manual/en/security.database.sql-injection.php –

+4

Welcome MysqlInjection, 와서 집처럼 느껴보십시오! :)! http://php.net/manual/en/security.database.sql-injection.php – genesis

+0

을 읽으면 목성만큼 큰 코드에 SQL 주입 구멍이 생깁니다. 어쩌면 실수로 잘못된 값을 삽입 한 것일 수 있습니다 (예 :'''). __LE__ : 오, 나는 그것을 발견했다 :'[..] 'username''' 근처에서 사용할 올바른 문법'<- 삽입 된 값은 쿼리를 중단시키는'username''입니다. –

답변

4

사용자 이름은 아마도 username'입니다. 변수 주위에 mysql_real_escape_string()을 추가하고 약 SQL Injection을 읽으십시오.

관련 문제