0

何らかの理由で、ID以外からデータベースに何も送信されていません

HTML

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

 <input name="youremail" type="text" class="your-field" id="youremail" value="Your Email Address" size="35"  />

 <input name="name" type="text" class="their-field" id="name" value="Receivers Name" size="35" onclick="if(this.value == 'Receivers Name') { this.value = ''; }" />

 <input name="receiveremail" type="text" class="their-field" id="receiveremail" value="Receivers Email Address" size="35" onclick="if(this.value == 'Receivers Email Address') { this.value = ''; }" />

 <textarea name="message" cols="35" rows="5" class="valentine-message" id="textarea" onclick="if(this.value == 'Your Message') { this.value = ''; }" />Your Message</textarea>

 <input class="button" name="" type="image" src="images/button.jpg" onClick="submit')">

 </form>

PHP

 // creates a random number for the id, ans check to see if the random number currently exists in database
 $success = FALSE; 

 while($success == FALSE) { 
$rand = rand(100000, 999999); 

$q = "SELECT * FROM $tablename WHERE rand = '$rand'"; 
$r = mysql_query($q, $link);

echo mysql_error();


if(mysql_num_rows($r)) { //id exists 
    continue; 
     } else { 
         $success = TRUE; 
     } 
 } 

 // insert your data here with $rand as the id
 $query = "INSERT into $tablename values ('$rand', '$youremail', '$name', '$receiveremail', '$message')";
 $result = mysql_query($query, $link);

 if (!$result) {
echo "Query Failed: " . mysql_error() . "<br />\n";
exit;
 }

これがデータベース構造ですhttp://i50.tinypic.com/14jq3he.pngそれに関する問題を見ることができますか?

4

1 に答える 1

0

まず、このコードregister_globalsは がオフになっているため、PHP バージョン >= 5.4 では機能しません。これは大きなセキュリティ上の問題であるため、他のほとんどすべてのシステムでは register_globals がオフになっています。

$_POST['fieldname'] を使用することをお勧めします。

2 つ目 - コードは SQL インジェクションに対して脆弱です

最後に、mysql_* 関数はもう使用しないでください。それらは古く、SQL インジェクションを処理できる pdo または mysqli_* に置き換えられているためです。

この 3 つのこと (または少なくとも最初の 2 つ) を修正すると、コードが機能するか、有用なエラー メッセージが表示されるはずです。

最後に-警告を有効にすると、何がうまくいかないかがわかります

于 2013-02-05T01:30:37.427 に答える