请检查验证

时间:2009-12-02 09:24:46

标签: php mysql

我将日值插入数据库,我希望验证,如果这一天已经存在它应该说已经存在,否则它应该是无数...请任何人都可以检查以下代码...提前感谢

$dexist=$_POST['ext'];
$res=mysql_query("select Day from mess where Day='".$dexist."' ");
while($row=mysql_fetch_array($res))
{
    $dy=$row['Day'];
}

if($dy==$dexist)
{
    echo "<script language=\"javascript\">";
    echo "window.alert ('File already exist');";
    echo "//--></script>";

}
else
{
    mysql_query("insert into mess (Date,Day,Breakfast,StartTimeb,EndTimeb,Lunch,StartTimel,EndTimel,Dinner,StartTimed,EndTimed) values('".$date."','".$day."','".$bre."','".$bres."','".$bree."','".$lun."','".$luns."','".$lune."','".$dinn."','".$dins."','".$dine."')");
}

4 个答案:

答案 0 :(得分:0)

你的脚本尖叫“SQL INJECTION!”请pwn我的网站!

另外:您的代码容易受到同步问题的影响。例如,在运行select语句之后可能会创建一个文件,但是在运行INSERT语句之前。这将导致奇怪的失败。这就是为什么你应该将“select and insert”作为单个存储过程进行读取(读取原子操作 - 更具体地说,这是“比较和交换”的实例)。

答案 1 :(得分:0)

这是你问题的重新发布。

搜索原文..

发现它.. Want to check day already exist

答案 2 :(得分:0)

不要在PHP中这样做,很难(不可能?)安全地做。通过在Day列上添加唯一索引在MySQL中执行此操作:

ALTER TABLE mess ADD UNIQUE (Day);

然后,您可以通过从MySQL查找ER_DUP_UNIQUE来捕获此类故障。

使用PHP的mysql_errno检查错误1169以捕获唯一约束失败。

$query_result = mysql_query("insert into mess (Date,Day,Breakfast,StartTimeb,EndTimeb,Lunch,StartTimel,EndTimel,Dinner,StartTimed,EndTimed) values('".$date."','".$day."','".$bre."','".$bres."','".$bree."','".$lun."','".$luns."','".$lune."','".$dinn."','".$dins."','".$dine."')");
// 1169 means a unique constraint failure
if (!$query_result && mysql_errno() == 1169) {
  echo "Oh noes, you tried to insert a value twice!";
}

答案 3 :(得分:0)

首先,永远不要将未经检查的POST / GET数据传递给MySQL查询,这是一个巨大的安全漏洞。请改用mysql_real_escape_string

$res=mysql_query("select Day from mess where Day='" . mysql_real_escape_string($dexist) . "' ");

类似于后者的电话。

其次,目前尚不清楚你在问什么......请告诉我们代码是否在某处工作,以及你得到的任何错误。我认为你对这一行有疑问:

if(file_exists($dy==$dexist))

这是将布尔值($dy==$dexist将评估为true或false)传递到file_exists函数。你需要传递文件名。