试试这个样子,现在,所有的字段是必须的,所以没有数据将被存储到数据库中,如果用户不填写的所有字段。
但是在你的小型家庭应用中使用它,不要把它放在生产服务器上,因为它仍然很容易被注入。
if(isset($_POST['phone'])
&& isset($_POST['tagline'])
&& isset($_POST['activity'])
&& isset($_POST['about'])){
$phone = $_POST['phone'];
$tagline = $_POST['tagline'];
$activity = $_POST['activity'];
$about = $_POST['about'];
$date=date('d-m-y');
$status='ok';
$con=mysqli_connect("localhost","root","","database");
mysqli_query($con,"UPDATE owners
SET phone='$phone', tagline='$tagline',status='$status',activity='$activity',about='$about',date='$date'
WHERE username='deiin'");
mysqli_close($con);
}
还是这个样子,活动,大约是可选:
if(isset($_POST['phone'])
&& isset($_POST['tagline']){
$phone = $_POST['phone'];
$tagline = $_POST['tagline'];
if(isset($_POST['activity'])) $activity = $_POST['activity'];
else $activity = '';
if(isset($_POST['about'])) $about = $_POST['about'];
else $about = '';
$date=date('d-m-y');
$status='ok';
$con=mysqli_connect("localhost","root","","database");
mysqli_query($con,"UPDATE owners
SET phone='$phone', tagline='$tagline',status='$status',activity='$activity',about='$about',date='$date'
WHERE username='deiin'");
mysqli_close($con);
}
但同样,要知道,有一个在这个代码巨大的安全漏洞,所以不要把这个生产服务器上。如果有人在表单中写了“引号”,它将被插入到sql查询中,并且它将成为那里的结束引号,因此引用之后的任何内容都将被解释为sql命令。这样,每个周围的小丑都可以在一秒钟内删除整个数据库。使用mysqli_real_escape_string()或准备语句
编辑: 如何使用mysqli_real_escape_string():
,而不是例如$phone = $_POST['phone'];
,您括在mysql_real_escape_string()这样的:
$phone = mysql_real_escape_string($_POST['phone']);
Couldn”不那么简单,可以吗? :)
,并记得引用everyhing查询,像你这样的:
UPDATE owners SET phone= ---> '$phone' <--- /*those quotes are
important for it to work, remember to keep them there */
我不想解释预处理语句,因为程序的语法是怪异和OOP语法可能会显得更加古怪给你。
如果用户没有填写表单或表单被破坏,你能显示你的HTML表单代码 –
,这个脚本将失败。您必须验证用户是否将这些数据放在那里,并验证这些数据是您真正想要的“好”数据。否则不好的事情会发生 – enrey
做一个print_r($ _ POST);看看有什么真的在.. ..你说的是GET不POST! –