2012-09-08 4 views
0

나는이 문제를 해결하기 위해 최선을 다하고 있습니다. 긴 폼이 있고 mysql 데이터베이스에 정보를 업로드하려고합니다. 내가 만든 테이블에. 이것은 내가 사용하고있는 MySQL의 쿼리입니다 :MySQL 쿼리 문제 : 업로드

mysql_query("INSERT INTO `users_temp`(`first_name`, `surname`, `birthday`, `nationality`, `email`, `mobile`, `landline`, `address`, `town`, `post_code`, `country`, `password`, `code_conf`) VALUES ([$f_name],[$s_name],[$bday],[$nationality],[$email],[$mobile],[$landline],[$address],[$town],[$post_code],[$country],[$pass],[$conf_code])"); 

누군가가 어떤 문제인지 안다면 pls에게 알려주세요. 고맙습니다 ...

$f_name   = $_POST["f_name"]; 
$s_name   = $_POST["s_name"]; 
$pass   = $_POST["pass"]; 
$birthday  = $_POST["bday"]; 
$nationality = $_POST["nationality"]; 
$email   = $_POST["email"]; 
$mobile   = $_POST["mobile"]; 
$landline  = $_POST["landline"]; 
$address  = $_POST["address"]; 
$town   = $_POST["town"]; 
$post_code  = $_POST["post_code"]; 
$country  = $_POST["country"]; 

$conf_code  = substr(md5(uniqid(rand(), true)), 1, 70); 

include("connect_into_mysql.php"); 
mysql_select_db("jzperson_edu", $conn); 

$res_01 = mysql_query("SELECT * FROM users WHERE email='$email'"); 
$count_01 = mysql_num_rows($res_01); 

if($count_01==0) 
{ 
mysql_query("INSERT INTO users_temp ('first_name','surname','birthday','nationality','email','mobile','landline','address','town','post_code','country','password','code_conf') VALUES ('$f_name','$s_name','$bday','$nationality','$email','$mobile','$landline','$address','$town','$post_code','$country','$pass','$conf_code')"); 
header("Location: home.php"); 
}else{echo "This email is already registered. If you lost your password you can reset it here.";} 
+0

오류를 찾으셨습니까? 당신이 데이터베이스에 넣은 변수들을 소독하고 있습니까? ps, 당신은'{$ varname}'또는''$ varname. '을 사용할 수 있습니다. –

+0

전체 코드를 질문 할 것입니다. 지금 편집 중입니다. –

+0

정확한 오류 메시지는 무엇입니까? 그리고 대괄호 []를 제거하고 다시 시도하십시오. 지금 어떤 오류 메시지가 있습니까? –

답변

1

1/당신은 SQL 주입을 알고 있어야합니다 : read this article. 예를 들어,는 mysql_real_escape_string와 모든 $ _POST 데이터를 캡슐화 :

$f_name   = mysql_real_escape_string($_POST["f_name"]); 

2/MySQL은 곧 더 이상 사용되지 않습니다

는, 빨간색 상자 here를 참조하십시오.

3/모든 머리글 뒤에 die()를 넣으십시오. 그렇지 않으면 코드 실행이 끝날 때까지 계속되고 클라이언트의 브루 서 방향 재설정이 비활성화 된 경우 권한이없는 콘텐츠가 표시 될 수 있습니다.

4/매우 긴 요청을 한 줄에 쓰지 마십시오. 문제를 피하고 작업을 더 쉽게 할 수 있습니다. 디버그하려면 "or die(mysql_error()) 끝에"를 추가하면 솔루션을 얻는 데 도움이되는 메시지가 표시됩니다.

그런데 사용자 테이블을 확인하고 user_tmp 테이블에 삽입합니다. 그런 식으로 갈등이 생길지 모릅니다.