ここから本文です

phpのisset関数についてと、論理演算子の使い方

clo********さん

2011/5/2313:52:09

phpのisset関数についてと、論理演算子の使い方

phpで「名前」と「一言」のどっちも入力して送信ボタンを押した時のみ、ファイルに書き込み、画面へ表示するプログラムです。
issetは値のある場合のみTRUEを返す為、「名前」nameと「言葉」langを&&の論理演算子使ってやってみましたが、どちらか片方だけ入力して送信ボタンを押してもファイルに書き込み、表示されてしまいます。
いくつかサイトを見てもうまくいかなかったため、投稿させて頂きました。
どうかよろしくお願い致します。


</head>
<body>

<form action="yomi.php" method="post">
名前
<input type="text" name="name">
一言
<input type="text" name="lang">
<input type="submit" value="送信">

</form>



<?php
$file_name ="./counter.log";



if ((isset($_POST['name']))&&(isset($_POST['lang']))) {
if($fn=@fopen($file_name,'a')){
fwrite($fn,"\n");
fwrite($fn,$_POST['name']."\t".$_POST['lang']);
fclose($fn);

print $_POST['name'];
}}


if(is_file($file_name)){
$text = @fopen($file_name,'r');
for($line = 1; !feof($text); $line++){
$lines = fgets($text);
if($lines){
print $lines;
}
}
fclose($text);
}else{
print 'not file';
exit;
}

?>

</body>
</html>

この質問は、20代の男性に回答をリクエストしました。

閲覧数:
637
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

kat********さん

編集あり2011/5/2316:27:00

マニュアルには
var が存在して NULL 以外の値をとれば TRUE、 そうでなければ FALSE を返します。

と載っているのでその値がブランク(何も表示されない空文字)であっても変数がセットされていれば true になります。
フォームをそのまま送信した場合、空データの送信になり、PHPは $_POST['name'] = ''; と解釈する為 isset関数で文字列が記入されているかまで調べるには

if(isset($_POST['name'][0],$_POST['lang'][0])){ ... } にして下さい。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる