0

私はすでにこのコードを理解していますが、ユーザーが送信ボタンで送信したエントリはどこにも行きません。これを修正する方法はありますか、または $_POST メソッドを使用する必要がありますか?

PHP コード:

    <?php
include ("dbroutine.php");
function register() {
$connect = db_connect;
if (!$connect)
{
die(mysql_error());
}
$select_db = mysql_select_db(securitzed, $connect);
if (!$select_db) {
die(mysql_error());
}
//Collecting info
$fname = $_REQUEST ['fname'];
$lname = $_REQUEST ['lname'];
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$email = $_REQUEST['email'];

//Here we will check do we have all inputs filled

if(empty($_REQUEST['username'])){
die("Please enter your username!<br>");
}

if(empty($_REQUEST['password'])){
die("Please enter your password!<br>");
}


if(empty($_REQUEST['email'])){
die("Please enter your email!");
}

//Let's check if this username is already in use
$user_check = mysql_query("SELECT username FROM members WHERE username = '".$_REQUEST

['username']."'");
$do_user_check = mysql_num_rows($user_check);
//Now if email is already in use
$email_check = mysql_query("SELECT email FROM members WHERE email= '".$_REQUEST['email']."'");
$do_email_check = mysql_num_rows($email_check);
//Now display errors
if($do_user_check > 0){
die("Username is already in use!<br>");
}
if($do_email_check > 0){
die("Email is already in use!");
}


//If everything is okay let's register this user
$insert = mysql_query("INSERT INTO members (username, password, email) 
VALUES ('".$_REQUEST['username']."', '".$_REQUEST['password']."', '".$_REQUEST['email']."', '".$_REQUEST['fname']."', '".$_REQUEST['lname']."')");
if(!$insert){
die("There's little problem: ".mysql_error());
}


}
switch($act){
case "register";
register();
break;
}

HTML コード:

   <body>

        <form method="post">
            First Name: <input type="text" name="fname" value="" /> <br />
            Last Name: <input type="text" name="lname" value="" /> <br />
            E-mail: <input type="email" name="email" value="" /> <br />
            Desired Username: <input type="text" name="username" value="" /> <br />
            Password: <input type="password" name="password" value="" /> <br />
            Confirm Password: <input type="password" name="passwordconf" value="" /> <br />
            <input type="submit" value="Submit"/>
        </form>

    </body>

何かを追加する必要がある場合は、誰かがそれを指摘できますか? そうでない場合は、必要に応じて追加のコードを追加することもできます.

4

4 に答える 4

1

$_REQUEST$_COOKIE$_GET、および$_POST変数が含まれます。使用$_REQUESTすると、データが投稿データからのものであるという保証がなくなり、スクリプトにセキュリティ ホールが発生します。私は使用します$_POSTが、この方法を使用すると、SQL インジェクションに対して脆弱になります。

$_GETクエリ文字列または URL から変数を取得します。$_POST(一般に) フォームなどの POST メソッドから変数を取得します。とwhere overrides$_REQUESTのマージです。$_GET$_POST$_POST$_GET

修理

以下のように、フォームでアクションを指定する必要があります。

<form action="fetch_data.php" method="post">

<form action="URL">

URL- フォームが送信されたときにフォームデータを送信する場所。可能な値:

  • 絶対 URL - 別の Web サイトを指す (action="http://www.example.com/example.htm" など)

  • 相対 URL - Web サイト内のファイルを指します (action="example.htm" など)。

于 2013-04-09T06:26:16.577 に答える
1

まず、変数についてもっと読むことをお勧めします。

2 番目のは、、など$_REQUESTの変数で、データベースに格納できます。したがって、あなたの質問については、はい、MySQL データベースにデータを挿入するために使用できます$_POST$_SESSION$_GET$_REQUEST

ただし、変数の代わりに使用すること$_POSTはまったく安全ではなく、良い習慣ではありません。これを見て、$_POST変数がどのように機能するかを確認してください。

第三mysql_*に、コードで関数を使用しています。SQL インジェクションを防止し、Web サイトの安全性を高めるために、代わりにPDOorを使用することを検討してください。MYSQLIさらに、PHP 5.5 以降では MYSQL が複製されます。このチュートリアルを見てください。MYSQL の代わりに PDO を使用する方法が示されています。

第 4に、パスワードをデータベースに直接保存しないでください。なんらかの形式のパスワード ハッシュが必要です。詳細はこちら

于 2013-04-09T06:27:48.440 に答える
0
  • ACTIONHTML で使用しますform
  • sqlインジェクションからのデータもサニタイズします。
  • からのデータ$_REQUESTが空でないかどうかを確認します。
于 2013-04-09T06:25:19.743 に答える
0

使ってみて

    $fname = $_POST ['fname'];
$lname = $_POST ['lname'];
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];

次のようにして、リクエスト パラメータを確認することもできます

var_dump($_POST); 
于 2013-04-09T06:27:41.980 に答える