我有一个小问题。我通过foro.php访问网站?id = 74& mode = add或foro.php?id = 74& mode =编辑它工作正常..但是当我为foro.php添加冒号,分号(;或:)时?id = 74& mode =将其添加到编辑选项
foro.php ID = 74&安培;模式=添加;
?foro.php ID = 74&安培;模式=添加:
?foro.php ID = 74&安培;模式=添加”
以下是我的代码
<?php
$numb=mysql_real_escape_string($_GET['id']);
if ($_GET['mode']=='add') {
$sql1="select * from cello where number='".mysql_real_escape_string($numb)."' LIMIT 1";
$result1=mysql_query($sql1) or die(mysql_error());
while ($row=mysql_fetch_array($result1)) {
$name=$row['name'];
echo $name;
}
}
elseif ($_GET['mode']='edit') {
$sql="select * from cello account_number='".mysql_real_escape_string($numb)."' limit 1";
$result=mysql_query($sql) or die(mysql_error());
while ($row=mysql_fetch_array($result)) {
$acnumb=$row['number'];
$name=$row['name'];
$address=$row['address'];
echo $acnumb;
echo $name;
echo $address;
}
}
else {echo "error!!";}
?>
如何防止它?
答案 0 :(得分:8)
您已使用赋值运算符=
而不是等于运算符==
。
尝试更改此内容:
elseif ($_GET['mode']='edit') {
到此:
elseif ($_GET['mode']=='edit') {
答案 1 :(得分:5)
问题在于,在以下几行中,在if语句中,您不是在比较,而是为GET数组中的mode元素赋值:
...
elseif ($_GET['mode']='edit') {
$sql="select * from cello account_number='".mysql_real_escape_string($numb)."' limit 1";
$result=mysql_query($sql) or die(mysql_error());
...
该操作返回true,第一个比较为false,这就是它进入编辑部分的原因。
答案 2 :(得分:5)
<强>解决方案:强>
问题肯定在于elseif ($_GET['mode']='edit') {
行; =
运算符将$_GET['mode']
设置为'edit'
(总是计算为true
)。一个好的但是词汇混乱的做法是写出这样的条件:
if (5 == $some_var)
如果未包含第二个=
,则会立即出错。
<强>建议:强>
您可能希望实施switch
控件来整理代码:
<?php
switch ($_GET['mode']) {
case 'add':
$sql1="select * from cello where number='".mysql_real_escape_string($numb)."' LIMIT 1";
$result1=mysql_query($sql1) or die(mysql_error());
while ($row=mysql_fetch_array($result1)) {
$name=$row['name'];
echo $name;
}
break;
case 'edit':
$sql="select * from cello account_number='".mysql_real_escape_string($numb)."' limit 1";
$result=mysql_query($sql) or die(mysql_error());
while ($row=mysql_fetch_array($result)) {
$acnumb=$row['number'];
$name=$row['name'];
$address=$row['address'];
echo $acnumb;
echo $name;
echo $address;
}
break;
default:
echo "error!!";
}