2017-11-19 1 views
0

나는 내 자신의 응용 프로그램을 만들고 있습니다. 좋아,SQL 쿼리에 사용자 데이터를 전달하는 방법은 무엇입니까?

<?php 

define('DB_HOST', '127.0.0.1'); 
define('DB_NAME', 'sqltest'); 
define('DB_USER', 'sqltest'); 
define('DB_PASSWORD', 'sqltest'); 

$conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) 
    or die ("failed to connect to db" . mysql_error()); 

$db = mysql_select_db(DB_NAME, $conn) 
    or die ("failed to connect to db" . mysql_error()); 


$v1 = @_POST['uname']; 
$v2 = @_POST['pass']; 
$v3 = @_POST['email']; 

$query = "INSERT INTO userinfo (Username, Password, Email, userid) 
    VALUES ('$v1', '$v2', '$v3', 'NULL')"; 
$data = mysql_query($query); 

if ($data === TRUE) { 
    echo "Registration successfully"; 
} else { 
    echo "Success"; 
} 

당신이 INSERT 쿼리를 볼 수 ...의 코드를 보자? $ v1, $ v2 등이 변수는 $ _POST의 변수이며 사용자 데이터를 가져와 데이터를 데이터베이스에 삽입합니다.

내가 직면 한 문제는 (uname, pass, email 및 * userid [자동])을 HTML 양식에 삽입 할 때의 문제입니다. 데이터가 데이터베이스에 표시되지 않았지만 증분 형식의 사용자 ID가 변경됨). 나는 당신이 여기에서 요점을 이해하기를 바랍니다.

나는 성공하지 못했지만 내가 아는 모든 것을 시도했다. 나는 그것이 무엇이 잘못되었는지 정말로 모른다.

누구나 이것을 고치고 설명을 제공해 주시겠습니까?

감사합니다.

+1

내 대답과 관련없는 메모에서 mysqli를 사용해보십시오. 'mysql'은 꽤 오래 동안 사용되지 않아 PHP 7.0에서 삭제되었습니다. – jhpratt

+0

삽입하는 동안 오류 메시지가 표시됩니까? –

+0

아니 @ 가비지 수집기 나는 데이터베이스에서 사용자 ID를 사용하고 있습니다. 그리고 그 사용자 ID는 증분 형태로 바뀝니다. 그러나 uername, password, email 주입 데이터와 같은 데이터는 오지 않았습니다. 당신이 내게 희망을 주길 바래. 만약 내가 지금 편집 한 내 질문을 볼 수 없다면. –

답변

3

은 오타 :

$v1 = @_POST['uname']; 

$v2 = @_POST['pass']; 
$v3 = @_POST['email']; 

변화에 :

$v1 = $_POST['uname']; 

$v2 = $_POST['pass']; 
$v3 = $_POST['email']; 

"@"기호 다음과 같이 오류를 숨기기 위해 사용됩니다

$v1 = @$_POST['uname']; 
+0

Nice Catch! 감사. –

1

SQL 삽입을 피하려면 mysql_real_escape_string()을 사용해야합니다.

설명서는 here입니다.

+0

안녕하세요. 전체 질문을 읽어보십시오. "SQL 주입에 취약한 자체 응용 프로그램을 만들고 있습니다." I –

+0

SQL 인젝션을 만들고 싶습니까? 나는 이해하지 못한다. – jhpratt

+0

나는 그가 단지'POST '요청을 통해받은 어떤 데이터를 삽입하려한다고 생각한다. –

3

귀하의 POST 변수 누락 $ . 시도해보십시오.

$v1 = @$_POST['uname']; 
$v2 = @$_POST['pass']; 
$v3 = @$_POST['email']; 

Btw 오류를 숨기려면 @를 사용하지 마십시오.

+0

감사합니다. ;) ..... –

관련 문제