2013-01-16 4 views
0

사용자 등록을 허용하려고 시도했지만 코드가 오류없이 돌아 왔지만 아무 것도 나타나지 않습니다. 나는 왜 나를 발견 할 수 없는지 알 수 없다. 내가 틀린 것을 보지 못했지만, 아마도 당신 중 한 명이 나를 도울 수 있습니까? 내 코드가 mysql 테이블의 행을 채우지 않는 이유는 무엇입니까?

1. $sql = "INSERT ..." 
2. ??? 
3. come to SO to ask why 

은 또한 당신이 mysqli와 MySQL 통화를 혼합하고 있습니다 ...

<?php 

require "includes/constants.php"; 

$conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME); 

if(isset($_POST['username'])) { 
    $username = $_POST['username']; 
    $uLength = strlen($username); 
} 

if ($uLength >= 4 && $uLength <= 15) 
{ 
} 
else 
{ 
    die("Your username must be between 4 and 15 characters."); 
} 

if($username == "") 
{ 
    die("You didn't tell me what to call you! Please enter a username."); 
} 

if(isset($_POST['pwd'])) { 
    $pwd = $_POST['pwd']; 
    $pLength = strlen($pwd); 
} 

if ($pLength >= 6 && $pLength <= 41) 
{ 
} 
else 
{ 
    die("Password must be between 6 and 41 characters."); 
} 

if($pwd == "") 
{ 
    die("Please enter a password and verify it."); 
} 

if(isset($_POST['pwd_conf'])) { 
    $pwd_conf = $_POST['pwd_conf']; 
} 
if($pwd != $pwd_conf) 
{ 
    die("Ouch! Your passwords don't match! Try again."); 
} 

if(isset($_POST['email'])) { 
    $email = $_POST['email']; 
    $email1 = "@"; 
    $email_check = strpos($email,$email1); 
} 

$user_check = "SELECT username FROM users WHERE username='$username'"; 
if($stmt = mysqli_prepare($conn,$user_check)) { 
    mysqli_stmt_execute($stmt); 

    if(mysqli_stmt_num_rows($stmt) > 0){ 
     die("Username is already in use!<br>"); 
    } 
} 

$query = "INSERT INTO users (username, password, email) VALUES ('$username', '$pwd', '$email')"; 

if(!$query) 
{ 
    die("Unfortunately, we can't sign you up because we have problems: ".mysql_error()); 
} 
else 
{ 
    header("Location: login.php"); 
} 

?>  
+2

당신은 데이터베이스를 조회하지 않은 이전하는 경우) 함수는 mysql_query를 (사용해야합니다, 당신은 단지 당신의 INSERT 문은'$의 query' 변수를 채워했습니다 . 여전히 그 쿼리를 실행해야합니다. –

+0

코드를 실행할 때 오류가 인쇄되지 않는다고 가정합니까? 편집 : @SetSailMedia 머리에 손톱을 친다. – Jeremy1026

+0

당신은 스스로 SQL 주입에 대해 열려 있습니다. 웹 응용 프로그램을 보호하기 위해 PDO 모듈과 함께 매개 변수가있는 쿼리를 사용하는 방법에 대해 알아보십시오. http://bobby-tables.com/php.html에는 시작하기위한 예제가 있습니다. –

답변

1

당신은 쿼리 문자열을 구축,하지만 그것을 실행하지 않을 :

다음은 전체 PHP 파일입니다 (특히 mysql_error는 INSERT 쿼리를 정의한 후에 호출됩니다 .. 두 라이브러리는 상호 교환 할 수없고 서로 호환되지 않습니다

또한 prep ared 문장 (예!) 완전히 잘못 사용하고 있습니다 (boo hiss). SQL injection attacks에 취약합니다.

-1

당신은 (! $ 쿼리) 다른 뭔가

$result = mysql_query($query); 
if(!$result){ 
+0

-1입니다. – SDC

관련 문제