isset功能不受欢迎的结果

时间:2013-03-26 14:20:59

标签: php forms function isset

<?php
if(isset($_REQUEST['fname'],$_REQUEST['age'],$_REQUEST['lname']))
{
    $file=fopen("guns.txt","w");
    $str1=$_POST["fname"];
    $str2=$_POST["lname"];
    $age=$_POST["age"];
    $chr="pussy";
    $cat="cat";
    vfprintf($file,"%s %s is %d years old",array($str1,$str2,$age));
    echo sprintf("HEY check out %1\$s %1\$s %2\$s %2\$s",$chr,$cat);
    fclose($file);
}
else
{
    echo "<form action='hill.php' method='post'>
    Enter your First Name:<input type='text' name='fname'></input><br>
    Enter your Last Name:<input type='text' name='lname'></input><br>
    Enter your Age:<input type='text' name='age'></input><br>
    <input type='submit' value='Submit'></input>
    </form>";
}
?>   

给定的代码来自 hill.php 文件

我不知道什么是错的,但我的isset功能无法正常工作 我希望所有条目都被填充,然后才开始回复输入if语句的消息。

请帮帮我。

3 个答案:

答案 0 :(得分:2)

您正在错误地使用vprintf()。它将 NOT 输出到文件句柄。格式为:

vprintf($format_string, array($args));

RTLM:http://php.net/vprintf

你应该拥有,而不是:

$formatted = vprintf('%this %that', array($this, $that));
$alt_format = sprintf('%this %that', $this, $that); // alternative
file_put_contents('yourfile.txt', $formatted);

答案 1 :(得分:0)

最好使用empty() (docs),对于像空字符串和null这样的东西,它会返回true。如果数组键存在,isset()将返回true以表示某些“假”值。

但我们应该注意,仅仅验证值的存在不应被视为适当的输入验证。您可能希望为每个字段引入更多语义验证(例如,“age”是一个整数吗?)

答案 2 :(得分:0)

检查错误日志。 运行上面的代码会导致:

Warning: fopen(guns.txt) [function.fopen]: failed to open stream: Permission denied in ... on line 4

Warning: vfprintf() expects parameter 1 to be resource, boolean given in ... on line 10
HEY check out pussy pussy cat cat
Warning: fclose() expects parameter 1 to be resource, boolean given in ... on line 12

您的isset函数 正常工作。此外,在您的问题编辑之前,最后'之前有一个?>