2016-07-19 10 views
-2

データベースにデータを挿入しようとしていますが、何らかの理由でコードが機能しません。ここで私は使用しているフォームです。PHP PDO - データベースにデータを挿入中にエラーが発生しました

<form id="registration" method="post" action="index.php" style="display: none;"> 
       <label for="username" class="username"> 
        Username 
       </label>  
       <input type="text" name="r-username" id="r-username" placeholder="Username" required/> 
       <label for="password"> 
        Password 
       </label>  
       <input type="password" name="password" id="password" placeholder="Password" required/> 
       <label for="check_password" class="check_password"> 
        Password Check 
       </label>  
       <input type="password" name="check-password" id="check_password" placeholder="Password again" required/> 
       <label for="e-mail"> 
        E-mail 
       </label>  
       <input type="email" name="e-mail" id="e-mail" placeholder="E-mail" required/> 
       <label for="check-e-mail" class="check_email"> 
        E-mail Check 
       </label>  
       <input type="email" name="check-e-mail" id="check-e-mail" placeholder="E-mail again" required/> 
       <input type="submit" name="submit" class="submit" value="Register"/> 
      </form> 

そしてここでPHPコードです:

if(isset($_POST['r-username'])) 
       { 
        $name=$_POST['r-username']; 
        $pass=$_POST['password']; 
        $passcheck=$_POST['check-password']; 
        $mail=$_POST['e-mail']; 
        $mailcheck=$_POST['check-e-mail']; 
        if($name==''||$pass==''||$passcheck==''||$mail==''||$mailcheck=='') 
        { 
         echo "<script type='text/javascript'>alert('Field must be filled.');</script>"; 
        } 
        elseif(strlen($pass)<=6) 
        { 
         echo "<script type='text/javascript'>alert('Password is too short.');</script>"; 
        } 
        elseif(strlen($pass)>=20) 
        { 
         echo "<script type='text/javascript'>alert('Password is too long.');</script>"; 
        } 
        elseif($pass!==$passcheck) 
        { 
         echo "<script type='text/javascript'>alert('Passwords must be same.');</script>"; 
        } 
        elseif($mail!==$mailcheck) 
        { 
         echo "<script type='text/javascript'>alert('Emails must be same.');</script>"; 
        } 
        else 
        { 
         $sql5='INSERT INTO user(user_name,password,joined,user_email) VALUES(:username,:password,Now(),:email)'; 
         $query1=$db->prepare($sql5); 
         $result=$query1->execute(array(":username" => $name, 
                 ":password" => $pass, 
                 ":email" => $mail 
                )); 
         if($result) 
         { 
          echo "<script type='text/javascript'>alert('Inserted.');</script>"; 
         } 
         else 
         { 
          echo "<script type='text/javascript'>alert('ERROR.');</script>"; 
         } 
        } 
       } 

コードが実行されますが、IDはdoesn't何でもします。ページをリロードするだけでメッセージERRORが返され、データベースにデータが挿入されません。私の悪い英語と申し訳ありませんが可能な答えのために申し訳ありません。

あなたが使用する必要があります
+0

https://secure.php.net/manual/en/pdo.error-handling.php –

+3

**プレーンテキストのパスワードを保存しないでください!** PHPの[組み込み関数](http:// jayblanchard .net/proper_password_hashing_with_PHP.html)を使用してパスワードセキュリティを処理します。 5.5より小さいPHPバージョンを使用している場合、 'password_hash()' [互換パック](https://github.com/ircmaxell/password_compat)を使用することができます。 *** [パスワードをエスケープしない](http://stackoverflow.com/q/36628418/1011527)***を確認するか、ハッシュする前に他のクレンジングメカニズムを使用してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –

+0

ユーザーが望む[passwords/phrases](https://xkcd.com/936/)を使用できるようにします。 [パスワードを制限しない](http://jayblanchard.net/security_fail_passwords.html) –

答えて

0

$sql5 = mysql_query("INSERT INTO `[database_name]`.`[table_name]` (user_name,password,joined,user_email) VALUES('$name','$pass','Date()','$mail');)"; 

そして、人々は、あなたがそれを得るためにしようとすると、それがcode.Butことを実行しますフォーム内のHTMLコードを入力することができますので、また、あなたは、この種のコードを使用して、変数を取得する必要がありますこの方法を使用すると、<html>のようなすべてのhtmlタグが翻訳されます。詳しくはhereをご覧ください。 ここにコードがあります。

$name = stripslashes(mysql_real_escape_string(htmlentities($_POST['r-username']))); 

Bye、Marko。

+0

それは良い考えではありません。最新のAPIの準備文から古い、古いmysql_' APIに移行します。このAPIは、ウィンドウが開いているときにドアをロックするほど安全です。 – Qirel

関連する問題