2011-01-01 3 views
2

저는 PHP에 익숙하지 않고 간단한 로그인 시스템을 만들고 있습니다. 누군가 등록을 원하면 register.html로 이동 한 다음 insert.php로 이동하십시오. 아래 코드는 폼의 데이터를 테이블에 추가해야하지만 테이블에 나타나지 않습니다. 아마도 그 줄은 다음과 같을 것입니다 : $ sql = INSERT INTO ... 나타나는 유일한 것은 코드 하단의 echo 문입니다 아마도 이것에 대한 간단한 대답이 있습니다 만, 그것을 찾아라. 감사합니다. 도움이 정말 감사합니다! 다시 insert.phpPHP에 삽입하여 데이터베이스에 데이터를 추가하지 않으시겠습니까?

<?php 
$email=$_POST['email']; 
$name=$_POST['name']; 
$password=$_POST['password']; 
$con = mysql_connect("localhost","user","[email protected]"); 
mysql_select_db("database", $con); 
$sql="INSERT INTO table_name (email, name, password) 
VALUES ('$email', '$name', '$password')";   
echo"Thank you, you are now registered and can login on our homepage"; 
mysql_close($con); 
?> 

감사를위한

코드!

+0

Niall

답변

6

연결을 설정하고 쿼리를 준비했지만 실제로 실행하지 않았습니다! mysql_query()으로 호출하여 SQL 및 연결 핸들을 전달하여 데이터베이스에 명령문을 수행하도록 지시해야합니다.

<?php 
$email=$_POST['email']; 
$name=$_POST['name']; 
$password=$_POST['password']; 
$con = mysql_connect("localhost","user","[email protected]"); 
mysql_select_db("database", $con); 
$sql="INSERT INTO table_name (email, name, password) 
VALUES ('$email', '$name', '$password')"; 
mysql_query($sql, $con) or trigger_error(mysql_error($con), E_USER_ERROR); 
echo"Thank you, you are now registered and can login on our homepage"; 
mysql_close($con); 
?> 

당신이 PHP (그리고 일반적으로 아마 데이터베이스 개발?)를 처음 말을하기 때문에, 저 또한 당신을 방지해야하는 이유가 무엇인지 설명하고 PHP tutorial on SQL injection의 방향, 당신을 지적하자 예를 들어, 예제 코드는 취약합니다. 응용 프로그램이 현재 높은 것을 그러나

mysql_query($sql); 

더 큰 문제는 다음과 같습니다

+2

+1은 SQL 삽입을 언급합니다. –

+0

고마워요, 맞아요, – Niall

+0

완벽하게 감사합니다! 귀하의 도움은 정말 감사드립니다! :) – Niall

2

이 코드가 작동하지 않는 이유는 당신이 실제로 쿼리를 만드는 mysql_query에 전화를 받았습니다하지 않은 것입니다 안전하지 않은 이유는 $email, $name 또는 $password의 유효성을 검사하지 않기 때문에 악의적 인 사용자가 쉽게 데이터베이스에 불쾌한 일을 할 수 있습니다. 최소한 mysql_real_escape_string을 사용하여 이스케이프 처리하십시오. 바람직하게는 사이트의 보안을 위해 PDO과 같은 라이브러리를 사용하십시오.

+0

네, 고맙습니다. 저는 기본을 올바르게 파악하고 암호화 및 유효성 검사를 추가하려고합니다. 어쨌든 고마워요 – Niall

+0

@Backslap 아주 좋았지 만 오래된 mysql_ 함수가 아니라 PDO로 배우면 기본적으로 보안 기능이 내장되어 있습니다. 나는 당신이 그 기능들을 탐구하도록 촉구 할 것입니다. – lonesomeday

관련 문제