2014-05-15 3 views
0

많은 질문을 받았지만 모든 사람의 코드가 다르다고 생각합니다. 그러나 등록 양식을 확인하는 데 문제가 있습니다.왜 내 양식이 잘못 검증 되었습니까?

스 니펫 아래에 제 코드를 게시합니다.

지금 정확히 내가 뭘 잘못하고 있니? 모든 필드가 채워 졌는지 확인하고 싶지만 아래 코드를 사용하거나 die() 함수에 오류를 추가하더라도 나머지 코드는 여전히 실행되고 양식이 전송됩니다.

아래 스 니펫은 제가 시도한 것입니다.

if(isset($_POST["submit"])){ 
if(empty($firstname) || empty($lastname) || empty($username) || empty($password) || 
empty($passwordconf) 
{ 
echo "You did not fill out the required fields."; 
die(); 
} 
$user=$_POST['user']; 
$pass=$_POST['pass']; 

이것은 현재 사용중인 코드입니다.

if(isset($_POST["submit"])){ 
$user=$_POST['user']; 
$pass=$_POST['pass']; 
$fname=$_POST['fname']; 
$lname=$_POST['lname']; 
$email=$_POST['email']; 
$username = "DBname"; 
$password = "DBpass"; 
$hostname = "DBhost"; 
$md5pass = md5($pass); 


if(empty($email)){ //this is what I've tried 
    $errors[] = "email cannot be left empty"; 
} 

//connection to the database 
$dbhandle = mysqli_connect($hostname, $username, $password) 
or die("Unable to connect to server"); 

$con=mysql_connect($hostname, $username, $password) or die(mysql_error()); 
$select=mysql_select_db("Database", $con) or die("cannot select DB"); 

$query=mysql_query("SELECT * FROM login WHERE username='".$user."'"); 
$numrows=mysql_num_rows($query); 
if($numrows==0) 
{ 
$sql="INSERT INTO login(username,password,firstname,lastname,email) 
VALUES('$user','$md5pass','$fname','$lname','$email')"; 

$result=mysql_query($sql); 


if($result){ 
echo "Account Successfully Created, Please login to continue"; 
} else { 
echo "Failure!"; 
} 

} else { 
echo "That username already exists! Please try again with another."; 
} 
} 
+1

데이터베이스가 주입 –

+1

**에 매우 취약은 위험 ** : 당신은 ** [믹싱 더 이상 쓸모없는 ** 데이터베이스 API] (http://stackoverflow.com/q/12859942/19068)와 현대적인 것 (작동하지 않을 것입니다) 만 사용해야합니다 [현대 대체] (http://php.net/ manual/ko/mysqlinfo.api.choosing.php). 또한 ** [SQL 주입 공격] (http://bobby-tables.com/) **에 현대적인 API를 사용하면 쉽게 방어 할 수 있습니다 ** (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)을 사용하십시오. – Quentin

+0

[적합하지 않은 해싱 알고리즘] (http://php.net/manual/en/faq.passwords.php)을 사용하고 있으며 [주의를 기울여야합니다.] (https://www.owasp.org/index. php/Password_Storage_Cheat_Sheet)를 입력하십시오. – Quentin

답변

0

어쩌면이 복사 중에 잃었지만 경우 둘째있어 필요 닫는 )

if(isset($_POST["submit"])){ 
    if(empty($firstname) || empty($lastname) || empty($username) || empty($password) || empty($passwordconf)) { 
+0

구문 오류가 발생하면 ($ _ POST [ 'fname']) || ..') 내가 여분을 더하면) – user3632789

관련 문제