2014-02-16 4 views
-2

Привет, у меня нет проблем с php на экране при его запуске, но у меня также нет активности в базе данных, а не в INSERTED. Каким будет мой следующий шаг для решения этой проблемы? Спасибо, что помогли нам.INSERT QUERY NOT WORKS

см код по адресу: http://businesstrends.co.il/learn/probcode.php

Также я хочу, чтобы получить больше информации о том, как сделать его более безопасным.

if(isset($_POST['submits'])){ 
    $connect = mysql_connect("localhost","root","",""); 
    function secure($secure){ 
     mysql_real_escape_string($secure); 
    } 
    $username = secure($_POST['username']); 
    $password = secure($_POST['password']); 
    $repassword = secure($_POST['repassword']); 
    $firstname = secure($_POST['firstname']); 
    $lastname = secure($_POST['lastname']); 
    $fullname = $firstname." ".$lastname; 
    $BirthDayDay = secure($_POST['BirthDayDay']); 
    $BirthDayMonth = secure($_POST['BirthDayMonth']); 
    $BirthDayYear = secure($_POST['BirthDayYear']); 
    $birthday = $BirthDayDay."/".$BirthDayMonth."/".$BirthDayYear; 
    $email = secure($_POST['email']); 
    $acceptterms = secure($_POST['acceptterms']); 

    /* echo $username."<br>".$password."<br>".$repassword."<br>".$firstname."<br>".$lastname."<br>".$birthday."<br>".$email."<br>".$acceptterms; */ 
    if(isset($acceptterms)){ 
     if(empty($username) && empty($password) && empty($repassword) && empty($firstname) && empty($lastname) && empty($BirthDayDay) && empty($BirthDayMonth) && empty($BirthDayYear) && empty($email) && empty($acceptterms)){ 
      echo "אחד מן השדות ריקים"; 
     }else{ 
      if($password == $repassword){ 
       if(mysql_query("SELECT username FROM users WHERE $username == username ") == 0){ 
        if(mysql_query("SELECT email FROM users WHERE $email == email ") == 0){ 
         mysql_query("INSERT INTO users (ID, fullname, username, password, email, birthday, tags, gold, activation) VALUES ('NULL', '$fullname', '$username', '$password', '$email', '$birthday', 'belarge', '0', '0')"); 
         echo $fullname."נרשמת בהצלחה לאתר בשם המשתמש:".$username."."; 
         mysql_close($connect); 
        }else{ 
         echo "האימייל בשימוש"; 
         mysql_close($connect); 
        } 
       }else{ 
        echo "שם משתמש בשימוש"; 
        mysql_close($connect); 
       } 
      }else{ 
       echo "הסיסמאות אינן תואמות"; 
       mysql_close($connect); 
      } 
     } 
    }else{ 
     echo "לא אישרתם תקנון!"; 
     mysql_close($connect); 
    } 
} 
+0

Связанный: http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – BlitZ

+6

Расширение mysql [устарело] (http://stackoverflow.com/questions/ 13944956) с PHP 5.5.0 и будет удален в будущем. Вместо этого [MySQLi] (http://www.php.net/manual/en/book.mysqli.php) или [PDO_MySQL] (http://www.php.net/manual/en/ref.pdo- mysql.php). Пожалуйста, не используйте 'mysql_ *' для разработки нового кода. – bansi

+0

Почему «функция защищена» внутри цикла if? разве это не делает вещи более запутанными? также он ничего не возвращает – bansi

ответ

0

Изменение:

if(mysql_query("SELECT username FROM users WHERE $username == username ") == 0){ 
        if(mysql_query("SELECT email FROM users WHERE $email == email ") == 0){ 
         mysql_query("INSERT INTO users (ID, fullname, username, password, email, birthday, tags, gold, activation) VALUES ('NULL', '$fullname', '$username', '$password', '$email', '$birthday', 'belarge', '0', '0')"); 
         echo $fullname."נרשמת בהצלחה לאתר בשם המשתמש:".$username."."; 
         mysql_close($connect); 
        }else{ 
         echo "האימייל בשימוש"; 
         mysql_close($connect); 
        } 
       } 

To:

if(mysql_num_rows(mysql_query("SELECT username FROM users WHERE '$username' = username ")) == 0){ 
    if(mysql_num_rows(mysql_query("SELECT email FROM users WHERE '$email' = email ")) == 0){ 
     mysql_query("INSERT INTO users (ID, fullname, username, password, email, birthday, tags, gold, activation) VALUES ('NULL', '$fullname', '$username', '$password', '$email', '$birthday', 'belarge', '0', '0')"); 
     echo $fullname."נרשמת בהצלחה לאתר בשם המשתמש:".$username."."; 
     mysql_close($connect); 
    }else{ 
     echo "האימייל בשימוש"; 
     mysql_close($connect); 
    } 
} 

Помните 'NULL' является строкой, но NULL равно нулю. MySql делает NOT использовать == для проверки равенства (он использует =).

P.S: расширение mysql - это deprecated с PHP 5.5.0 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. Пожалуйста, не используйте mysql_ * для разработки нового кода.