1

私はhtmlファイルからphpにデータを送信していますが、すべての値がデータベースに空で保存されているわけではありません.htmlから値を取得していないと思います.次のコードを使用しています.

<html>
<body><form action="data.php" method="get">

<input type="text" name="$R1"  id="R1"  value="John"><br>
<input type="text" name="$R2"  id="R2"  value="thePassword"><br>
<input type="text" name="$R3"  id="R3"  value="thePassword"><br>
<input type="text" name="$R4"  id="R4"  value="thePassword"><br>
<input type="text" name="$R5"  id="R5"  value="thePassword"><br>
<input type="text" name="$R6"  id="R6"  value="thePassword"><br>
<input type="text" name="$R7"  id="R7"  value="thePassword"><br>
<input type="text" name="$R8"  id="R8"  value="thePassword"><br>
<input type="text" name="$R9"  id="R9"  value="thePassword"><br>
<input type="text" name="$R10" id="R10" value="thePassword"><br>
<input type="text" name="$R11" id="R11" value="thePassword"><br>
<input type="submit">
</form></body>
</html>

PHP コード テーブルにデータを追加するために、空白のレコードのみを挿入します。

     <?php

        $con =            
        mysql_connect("surveyipad.db.6420177.hostedresource.com","","");
     if (!$con)
      {
      die('Could not connect: ' . mysql_error());
       }

      mysql_select_db("surveyipad", $con);

      $device_Id=$_GET['device_Id'];

      $R1=$_GET['R1'];
      $R2=$_GET['R2'];
      $R3=$_GET['R3'];
      $R4=$_GET['R4'];
      $R5=$_GET['R5'];
      $R6=$_GET['R6'];
  $R7=$_GET['R7'];
  $R8=$_GET['R8'];
     $R9=$_GET['R9'];
 $R10=$_GET['R10'];
 $R11=$_GET['R11'];

  echo($R1);


    $update_date_time=$_GET['update_date_time'];

    $teritory1=$_GET['teritory1'];


    $query=("INSERT INTO std     (device_Id,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,update_date_time,teritory1)

        VALUES 
 ('$device_Id','$R1','$R2','$R3','$R4','$R5','$R6','$R7','$R8','$R9','$R10','$R11','$update_date_time','$teritory1')");


   mysql_query($query,$con);
    printf("Records inserted: %d\n", mysql_affected_rows());
  ?>
4

3 に答える 3

2

で名前を変更

<input type="text" name="$R1" id="R1" value="John"><br>

<input type="text" name="R1" id="R1" value="John"><br>

name="$R1"name="R1"てみる

=>クエリをSQLインジェクションから保護します。

=>使用mysql_real_escape_string

$query=("INSERT INTO std       (device_Id,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,update_date_time,teritory1)
 VALUES 
 ('".mysql_real_escape_string($device_Id)."',
'".mysql_real_escape_string($R1)."',
'".mysql_real_escape_string($R2)."',
'".mysql_real_escape_string($R3)."',
'".mysql_real_escape_string($R4)."',
'".mysql_real_escape_string($R5)."',
'".mysql_real_escape_string($R6)."',
'".mysql_real_escape_string($R7)."',
'".mysql_real_escape_string($R8)."',
'".mysql_real_escape_string($R9)."',
'".mysql_real_escape_string($R10)."',
'".mysql_real_escape_string($R11)."',
'".mysql_real_escape_string($update_date_time)."',
'".mysql_real_escape_string($teritory1)."')");

=> mysql_* 関数は非推奨です。mysqli_* 関数または PDO を使用してください

=> 重要でない :特に使用する理由がない場合は、 に変更method="get"することをお勧めします。method="POST"get

于 2013-02-26T06:29:11.773 に答える
1

フォーム内のname属性は、で始まらないでください$:

<input type="text" name="R1"  id="R1"  value="John">

...等々


あなたのコードはインジェクションに対して非常に脆弱です。/ext/mysqlを介して適切にパラメーター化されたステートメントの使用を停止し、使用するように更新する必要があります。PDOmysqli

フォームの残りの部分も送信しupdate_date_timeていません。territory1POST よりも GET を使用する理由はありますか? 冪等でないリクエストには POST を使用する必要があります。

于 2013-02-26T06:29:28.117 に答える
1

HTML の属性$から削除します。nameへの変更name="R1"

于 2013-02-26T06:29:54.107 に答える