1

サインアップ フォームを html ですべてセットアップして動作させています。初めて実行され、mysql テーブルに行が挿入されますが、それ以上行を挿入できません。

私のphpは: -

include "config.php";

$gamerid = $_POST['gamerid_create'];
$email = $_POST['email_create'];
$password = md5($_POST['password_create']);
$country = $_POST ['country_create'];

echo "<pre>";
print_r($_POST);
echo "</pre>";

$insert = "insert into users (gamerid,email,password,country) values('$gamerid','$email','$password','$country')";
mysql_query($insert);

mysqlでテーブルを作成したとき、次のコードを使用しました:-

CREATE TABLE users
(
id INT primary key NOT NULL AUTO_INCREMENT,
gamerid varchar (255) NOT NULL,
email varchar (255) NOT NULL,
password varchar (255) NOT NULL,
country varchar (255) NOT NULL
)

行が挿入されないのはなぜですか?

私のhtmlは次のとおりです。

<form id = "signup_form" method = "POST" action = "http://localhost:8080/quizicle/pages/register.php">
<table id = "signup_form_table" border = "0" class = "signup_table_body">
<tr class = "signup_form_tr_label">
<td class = "signup_form_td"><label for "gamerid" class = "signup_form_label">Create a Gamer ID:</label></td>
<td class = "signup_form_td"><label for "email" class = "signup_form_label">Your Email:</label></td>
<td class = "signup_form_td"><label for "password" class = "signup_form_label">Password:</label></td>
<td class = "signup_form_td"><label for "country" class = "signup_form_label">Country:</label></td>
<td class = "signup_form_td"></td>
</tr>

<tr class = "signup_form_tr">
<td class = "signup_form_td"><input type = "text" name = "gamerid_create" id = "gamerid_create" maxlength="50" class = "signup_form_input"/></td>
<td class = "signup_form_td"><input type = "text" name = "email_create" id = "email_create" maxlength="50" class = "signup_form_input"/></td>
<td class = "signup_form_td"><input type = "password" name = "password_create" id = "password_create" maxlength="50" class = "signup_form_input"/></td>
<td class = "signup_form_td">
<select name = "country_create">                                    <option>Please select a country</option> 
<option>United Kingdom</option> 
</select>
</td>
<td class = "signup_form_td"><input type = "submit" value = "Sign me up!" id = "btn_register" value = "register" class = "signup_form_submit_btn"/></td>
</tr>   
</table>
</form>
4

2 に答える 2

0
    <?php

include "config.php";

// INPUT CLEANING FUNCTION
function clean($str)
{
    $cleaned = mysql_real_escape_string(strip_tags($str));
    return $cleaned;
}

$gamerid = clean($_POST['gamerid_create']);
$email = clean($_POST['email_create']);
$password = clean(md5($_POST['password_create']));
$country = clean($_POST ['country_create']);


$insert = "insert into users(gamerid,email,password,country) values('$gamerid' ,'$email',' $password', '$country')";                        
mysql_query($insert);
?>
  1. 自動インクリメントする場合は、idフィールドを確認してください
  2. 入力タグまたはtextareaタグの属性名を確認してください//オプションの提案
  3. phpに組み込まれているfilter_var関数を使用してメールを有効にします
  4. パスワードの長さと強度を検証する
  5. いくつかの命名規則も考慮してください
  6. フレームワークCODEIGNITERまたはLARAVELを使用する
于 2012-10-19T18:34:50.953 に答える
-1

それはおそらくあなたの主キーに関するものですid

SQL を変更して、動作するかどうかを確認してみましょう。

$insert = "INSERT INTO users (id, gamerid, email, password, country) 
  VALUES (NULL, '{$_POST['gamerid_create']}', '{$_POST['email_create']}', 
  '{$_POST['password_create']}', '{$_POST['country_create']}');";

PHP / MySQL のスキルを磨く際に考慮すべき事項:

  • ユーザー入力を検証してスクラブします。SQL インジェクションのリスク。基本的なヘルプについては、mysql_real_escape_string() を参照してください。

  • テーブルを構成して、フィールドのタイプとサイズを必要最小限に設定する必要があります。すべてを入力しないと、VARCHAR(255) が大量のスペースを浪費します。

  • 少なくとも md5 アルゴリズムを使用して常にパスワードをハッシュします。

于 2012-10-19T18:31:27.190 に答える