1
<?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 语句的消息。

请帮我。

4

3 回答 3

2

您错误地使用了 vprintf()。它不会输出到文件句柄。格式为:

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);
于 2013-03-26T14:41:14.923 回答
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 函数工作正常。此外,在您的问题被编辑之前,您在结尾'之前有一个。?>

于 2013-03-26T14:43:45.363 回答
0

改用empty() (docs)可能会更好,它将为空字符串和 null 之类的内容返回 true。isset()如果数组键存在,将对某些“虚假”值返回 true。

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

于 2013-03-26T14:31:30.077 回答