2016-07-19 8 views
0

おはようございます。私はWebページが、その後、スーパーグローバル配列のセッションでは、ユーザーのログイン名を記録したいルールがPHPで間違った結果を返す場合

PHP 7.上に構築され、将来のウェブサイトのために小規模なテストを実行しています

場合ユーザーがログイン名を入力すると、フォーラムにリンクが表示されます。

ユーザーがログイン名を指定せずに[送信]ボタンを押すと、スクリップにはホームページへのリンクが表示されます。

アクションページは、フォームを表示しているページと同じページです。

これは、コードのPHPの一部です:

<?php 
    if(isset($_POST['loginName'])) 
    {  
     $_SESSION['loginName'] = $_POST['loginName']; 
     echo 'Login name is : '.$_SESSION['loginName']; 
     echo '<a href="accessForum.php">Get to the forum !</a>'; 
    } 
    else 
    { 
     echo 'No name provided. Try again or move back to <a href="index.php">homepage</a>'; 
    } 
?> 

問題:私は、ログイン名を入力せずに送信ボタンを押したときに、それ以外の文は適用されません。代わりに、ifステートメントが適用され、 'Login name is'の後に空の文字列が表示されます。

私はこの現象の理由を理解していません。誰も助けることができますか?ありがとう、クリストフォー。

+0

間違いがあると申し訳ありませんが、このようなコード(テキストとリンクの間に空白はありません)の視覚的なアウトプットは気にしないでください。テスト目的にすぎません。ありがとうございました ! –

+1

if(isset($ _ POST ['loginName'])&& $ _POST ['loginName']!= "") –

+1

また、session_start()がありません。 –

答えて

3

フォームがある場合、フォームフィールドにはデータが含まれていなくてもサーバーに送信されます(空の文字列)。 issetはフォームフィールドがまったく提出されたかどうかだけを伝えます。名前にコンテンツが含まれているかどうかを自分で確認する必要があります。 strlen($_POST['loginName']) > 0である。

+0

これは正しいです(ただし、 'if(empty($ var))'または単に 'if($ var)')を使用することもできます。しかし、フォームの内容を投稿せずにページを呼び出すことができるように、例えば、コンテンツが空であるかどうかをチェックするために 'isset()' *もチェックするべきです。投稿ページ。 – Simba

+1

@Simba 'isset()' _and_ 'empty()'をチェックする必要はありません。 'empty()'自身が 'isset()'をチェックします。 – MrWhite

関連する問題