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

empty() 代わりに(docs)を使用するとよい場合があります。これにより、空の文字列やnullなどに対してtrueが返されます。isset()配列キーが存在する場合、一部の「偽の」値に対してtrueを返します。

ただし、値の存在を単に検証することは、適切な入力検証と見なされるべきではないことに注意する必要があります。各フィールドにさらにセマンティック検証を導入することをお勧めします(たとえば、「年齢」は整数ですか?)

于 2013-03-26T14:31:30.077 に答える
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 に答える