2016-06-23 12 views
0

私は数日間この問題に苦労しています。これはPHPを使った私の最初のプロジェクトなので、自分では分かりません。他の人の助けを借りてコードを書き直しました私はまだ解決策を見つけることができません。フォームを送信した後php INSERT INTO MySQLが動作しない

<form id="registerForm" action="http://localhost//register.php" method="post"> 
    <fieldset align="center"> 
    <legend id="legendText">Register</legend> 
    <p>Name: 
     <input type="text" name="fname" value="" required autofocus maxlength="16"></p> 
    <p>Last name: 
     <input type="text" name="lname" value="" required maxlength="16"></p> 
    <p>E-mail: 
     <input type="email" name="mail" value="" placeholder="@mail.com" maxlength="32" required></p> 
    <p>Age: 
     <input type="number" name="age" value="" maxlength="2" max="99" maxlength="2" size="2" min="1" required></p> 
    <p>Job: 
     <input type="text" name="job" value="" maxlength="16" required></p> 
     <table align="center" id="registerPwdAndUsrTable" border="1" width="30%"> 
     <tr> 
      <td> 
      <p>Username: 
       <input type="text" name="username" value="" required maxlength="16"></p> 
      </td> 
      <td> 
      <p>Password: 
       <input type="password" name="password" value="" required maxlength="16"></p> 
      </td> 
     </tr> 
     </table> 
     <input form="registerForm" type="Submit" value="Εγγραφή"> 
     <input form="registerForm" type="Reset" value="Ακύρωση"> 
    </fieldset> 
</form> 

ので、私はシンプルなユーザーregistration.Iがregistration_page.htmlに含まれているこのフォームからユーザーの入力を取得したい、コードはこれです呼び出されるPHPスクリプトはregister.phpです(action=" "に記載されているように、スクリプトはサーバによって処理されます)。 は今、register.phpは次のとおりです。

register.php

<!Doctype html> 
<html> 
<head> 
    <meta charset="utf-8"><!--characters recognised--> 
    <title>Register</title> 
<style> 

body{ 
    background-image: url(my_images//background_homepage.jpg); 
    background-repeat: no-repeat; 
    background-size:cover; 
} 
</style> 
</head> 
<body> 

<?php 
    extract($_POST);//superglobal variable 

if(isset($_POST['submit'])) { 

    print_r($_POST); 

    //Getting the variables from 'registerForm' ++ /* checking if user inputs are set */ 
    $first_name = (isset($_POST['fname'])) ? $_POST['fname'] : NULL; 
    $last_name = (isset($_POST['lname'])) ? $_POST['lname'] : NULL; 
    $age = (isset($_POST['age'])) ? $_POST['age'] : NULL; 
    $job = (isset($_POST['job'])) ? $_POST['job'] :NULL; 
    $email = (isset($_POST['mail'])) ? $_POST['mail'] : NULL; 
    $username = (isset($_POST['username'])) ? $_POST['username'] : NULL; 
    $password = (isset($_POST['password'])) ? $_POST['password'] : NULL; 

//INSERT INTO Query Creation 
$sqlQuery = "INSERT INTO registered_user (age,email,fname,job,lname,password,username) 
VALUES ('$age','$email','$first_name','$job','$last_name','$password','$username')"; 

//MySQL connection 
if(!($database = mysql_connect("localhost","root","")))//server name , a username , password 
    die("Couldn't connect to DB </body></html>");//if false --> script gets terminated 

//Opening database "htmlproject" 
if(!mysql_select_db("htmlproject",$database))//Database to be used , htmlproject 
    die("Couldnt open htmlproject db </body></html>"); 

//Query 
mysql_query($sqlQuery, $database); 
if(!($result = mysql_query($sqlQuery, $database))) 
{ 
    print("failed query! <br />"); 
    die(mysql_error() . "</body></html>"); 
}else{ 
    print("success query!"); 
}//end if 

//Free resources 
mysql_close($database); 

}//end ifisset 
?><!--end php script.To be executed by server--> 

<script type="text/javascript">//registration completed 
var r=window.confirm("registration completed"); 
if(r == true){ 
    document.location.href = "HOMEPAGE.html"; 
}else{ 
    document.location.href = "HOMEPAGE.html"; 
} 
</script> 

</body> 
</html> 

だから私の問題はINSERT INTO registered_user...がwork.Iは私のデータベース、何にエントリを取得しないしないということです。私はXAMPPを使用していますが、テーブルはこれです:あなたは決して、これまでに「提出」を定義する

registered_user table SQL script

+0

ここにあなたのコードを投稿して、将来のビルダーのために保存してください。 –

+0

あなたはあなたのSQLデータベースにユーザー名とパスワードを渡していますか?あなたのスクリプトで除外されているのが分かりますが、ここに投稿するだけの理由がありますか?あなたに何のエラーがありますか?それらの死のメッセージが表示されますか?また、接続しているユーザーがdbの読み書きに十分な特権を持っていることを確認する必要があります。 –

+2

[Little Bobby](http://bobby-tables.com/)は[あなたのスクリプトはSQLインジェクション攻撃の危険にさらされていると言います。](http://stackoverflow.com/questions/60174/how-can-i-prevent -sql-injection-in-php)を実行します。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –

答えて

6

。その名前のフォーム要素はありません。したがって、これは:

毎回失敗します。あなたはエラーメッセージを出力していません、エラーログをチェックしましたか?クエリが機能していると仮定しています。開いた直後にファイルの先頭にエラー報告を追加してください<?phpタグerror_reporting(E_ALL); ini_set('display_errors', 1);クエリにor die(mysql_error())などのエラーチェックを追加してください。または、現在のエラーログで問題を見つけることができます。エラーチェックにより、$_POST['submit']が未定義であることがわかります。また


Little Bobbyyour script is at risk for SQL Injection Attacks.言います。でもescaping the stringは安全ではありません! がPHP 7で削除されました。PDOMySQLipreparedの文について学び、PDOの使用を検討してください。it's really pretty easy

プレーンテキストのパスワードを保存しないでください。パスワードのセキュリティを処理するには、PHPのbuilt-in functionsを使用してください。 5.5より小さいPHPバージョンを使用している場合はpassword_hash()compatibility packを使用できます。あなたは必ずdon't escape passwordsを確認するか、ハッシングの前に他のクレンジング機構を使用してください。そうするとはパスワードをに変更し、不要な追加のコーディングを引き起こします。

+1

ここでJohnを明確にするには、Submit入力に 'name =" submit "属性を追加する必要があります。私はこの答えがおそらく大部分の人には理解できることを知っていますが、あなたがフォームを提出するのがかなり新しいように聞こえるので、わかりました。 'type =" submit "'を指定しますが、 '$ _POST'配列内で参照される名前も必要です。 – kunruh

+0

これは私のエントリーが提出されなかったエラーです。 –

関連する問題