除ID外,没有任何内容被发送到数据库

时间:2013-02-05 01:23:26

标签: php phpmyadmin

由于某些原因,除了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你能看到任何问题吗?

1 个答案:

答案 0 :(得分:0)

首先,由于register_globals已关闭,此代码无法在PHP版本&gt; = 5.4中使用。在几乎所有其他系统上,register_globals都被关闭,因为这是一个很大的安全问题。

最好使用$ _POST ['fieldname']。

其次 - 你的代码容易受到sql注入攻击

最后,不应再使用mysql_ *函数了,因为它们已经老了,取而代之的是可以处理sql注入的pdo或mysqli_ *。

如果您修复了这三件事(或至少是前两件事),您的代码应该正常工作或显示有用的错误消息。

最后一件事 - 如果启用警告,你会发现什么是错误的