<?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语句的消息。
请帮帮我。
答案 0 :(得分:2)
您正在错误地使用vprintf()。它将 NOT 输出到文件句柄。格式为:
vprintf($format_string, array($args));
你应该拥有,而不是:
$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函数 正常工作。此外,在您的问题编辑之前,最后'
之前有一个?>
。