我做了这个php
,但我无法让它正常工作。当我输入姓名或单词时,我会收到Error 404
。
"编辑":谢谢我不再得到错误404但是当我输入名字时它仍然不起作用。我输入的文字,当我按下输入时,它会被删除并重新开始。任何人都知道我是否错过了什么以及如何解决它?
代码:
<?
if(!isset($_REQUEST["name"])&&(!empty($_REQUEST["name"])))
{
echo "Hello".$_REQUEST["name"];
}else
echo "You have to type something!";
?>
<hr/>
<form method="post" action="<?=$_PHP_SELF?>">
<input type="text" name="name"/>
</form>
答案 0 :(得分:1)
替换:
<?=$_PHP_SELF?>
带
<?php echo $_SERVER['PHP_SELF']; ?>
默认情况下,没有名为$_PHP_SELF
的内容。另外,请注意,在某些PHP版本中,PHP短标记可能会被标记为弃用。
如@krishna所述,使用$_SERVER['PHP_SELF']
可能会导致XSS攻击。使用htmlspecialchars()
转义网址。
另一方面,将action
属性设置为空,不符合HTML 4和5规范。见answer。如果您认为将实际网址设置为action
属性很麻烦,可以使用action="?"
或action="."
,其工作方式与action=""
相同。
答案 1 :(得分:1)
试试这个
<?=$_SERVER['PHP_SELF']?>
或
<form method="post" action="">
答案 2 :(得分:1)
$_SERVER['PHP_SELF']
容易遭受XSS攻击。请尽量避免使用htmlspecialchars()
或filter_input
这样
action="<?php echo filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_URL) ?>"
或
action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"], ENT_QUOTES, "utf-8"); ?>"
而不是
action="<?php echo $_SERVER['PHP_SELF']?>"
答案 3 :(得分:0)
您正在使用$_PHP_SELF
错误。
输入:
<?=$_SERVER['PHP_SELF']?>
答案 4 :(得分:0)
请使用以下代码。我已经更改了表单操作,还更改了
中的以下行!isset($_REQUEST["name"])
到
isset($_REQUEST["name"])
在您检查名称之前没有设置并且不是空的。
<?
if(isset($_REQUEST["name"])&&(!empty($_REQUEST["name"])))
{
echo "Hello ".$_REQUEST["name"];
}
else
{
echo "You have to type something!";
}
?>
<hr/>
<form method="post" action="">
<input type="text" name="name"/>
</form>
答案 5 :(得分:0)
<?
if(isset($_REQUEST["submit"])&&(!empty($_REQUEST["name"])))
// and you are not checking for submission
{
echo "Hello".$_REQUEST["name"];
}
else
echo "You have to type something!";
?>
<hr/>
<form method="post" action="">
<input type="text" name="name"/>
<input type="submit" name="submit" /> // where is the submission ??
</form>