当我刷新页面文本自行删除,PHP?

时间:2012-09-02 05:39:03

标签: php mysql post

当我在文本框中输入内容并将其保存在mysqli中时,它可以完美地工作,但是当我刷新同一页面时我写的东西,它就会毫无理由地消失。我也在该页面中有另一个文本框,它工作得很好。我该如何解决这个问题?生物文本框是我遇到的问题。

    $getpro = mysql_fetch_assoc(mysql_query("SELECT * FROM `profile` WHERE username = '".$user_data['username']."'  "));$pro = $getpro;
$bios = $pro["bios"];
$realtionship = $pro["realtionship"];
$impmessage = $pro["impmessage"];
if ($_POST['bio']){
$bio = $_POST['bio'] ;
$query;
}
if ($_POST['impmessage']){
$impmessage = $_POST['impmessage'] ;
$query;
}
$query = mysql_query("UPDATE `profile` SET  bios ='$bio',  impmessage = '$impmessage' WHERE username = '".$user_data['username']."'");<form name="bio"action="" method="post">
<p>Important Message</p> <textarea   cols="50" style="resize:none" name="bio"  rows="7" ><? echo $bios; ?></textarea><br />
<input type="submit" value="change">
</form><hr /><form name="impmessage"action="" method="post">
<p>Important Message</p> <textarea   cols="50" style="resize:none" name="impmessage"  rows="7" ><? echo $impmessage; ?></textarea><br />
<input type="submit" value="change">
</form>

2 个答案:

答案 0 :(得分:1)

我重新安排了&amp;删除了一些代码并尝试整理一下:

<?php
    if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) // if form is submitted using POST method
    {
        if ( isset( $_POST['bio'] ) ){
            $bio = mysql_real_escape_string( $_POST['bio'] ); // escape special characters is user input
            $query = mysql_query("UPDATE `profile` SET  bios ='$bio' WHERE username = '".$user_data['username']."'"); //update bios
        }

        if (isset( $_POST['impmessage'] ) ){
            $impmessage = mysql_real_escape_string( $_POST['impmessage'] ); // escape special characters is user input
            $query = mysql_query("UPDATE `profile` SET impmessage = '$impmessage' WHERE username = '".$user_data['username']."'"); //update impmessage
        }
    }

    $pro = mysql_fetch_assoc(mysql_query("SELECT * FROM `profile` WHERE username = '".$user_data['username']."'  "));
?>

<form name="bio" action="" method="post">
    <p>Bios</p>
    <textarea cols="50" style="resize:none" name="bio" id="bio" rows="7" ><?php echo $pro["bios"]; ?></textarea>
    <br />
    <input type="submit" value="change">
</form>
<hr />
<form name="impmessage" action="" method="post">
    <p>Important Message</p>
    <textarea cols="50" style="resize:none" name="impmessage" id="impmessage" rows="7" ><?php echo $pro["impmessage"]; ?></textarea>
    <br />
    <input type="submit" value="change">
</form>

给你的一些注意事项:

  • 首先避免使用mysql_ *函数。而是使用mysqli或PDO
  • 我总是更喜欢在页面的最开头编写用于处理用户输入的代码,即。在输出任何东西之前。因为,如果用户输入对输出进行任何更改,它将很容易显示更新,因为我们在输出任何内容之前进行处理。因此,当我们查询数据库时,它将获取更新的数据。此外,如果我们想要重定向到另一个页面或者必须将一些其他标题发送到浏览器,我们可以这样做,因为在输出任何内容之前应始终发送标题。
  • 另一件事是,总是逃避用户输入。否则,容易发生sql注入。最好的办法是使用mysqli&amp; amp; PDO。
  • 当您在HTML中命名id个元素时,请确保它是唯一的。因为没有相同的ID可能出现两次。但是类名可以发生任何次数。
  • 还要确保您的PHP代码不会与HTML混淆。使用<?php&amp;正确附上PHP代码。 ?>个标签。我总是喜欢避免卖空。
  • 由于您使用的是两种表单,因此输入都不会到达服务器端。只有一个。如果您希望同时访问两个输入,请使用单个表单。
  • 我还避免了从获取的数据到其他变量的不必要的赋值操作。
  • 此外,您应始终正确缩进代码以提高可读性。

我希望这会有所帮助。祝你好运。 :)

答案 1 :(得分:0)

看起来您每次加载页面时都在运行更新查询。如果未填充帖子值并且您刷新它将使用空值更新。 在生产之前,Ps sberry还有很多其他需要解决的问题。