2016-11-15 4 views
1

特定の条件をチェックし値を返すif文のセットを作成しようとしています。私が遭遇した問題は、私がこれを設計してFirefoxで実行していることですが、私はChromeで試してみましたが、そのステートメントとは異なる結果が提示されています。Chromeはphp if文をFirefoxと別の形で評価します

である私はif文をどうしようとしていますが、ユーザーがページ上のフォームに記入して、別のページ意志に送信されます。値の

  1. チェック内容と空の場合は、生産「あなたはここにいるべきではありません」というメッセージ - (誰かがページに直接アクセスしたかのように)
  2. 値が空でない場合は、ページがリフレッシュされていることを確認し、「これは既にデータベースに入力されています
  3. 値が空ではなく(1のように)、ページがリフレッシュされていない場合(2と同様に)、stor

フォームに記入してこのページに移動すると、コードを実行して「成功」と表示されます。しかし、Chromeで全く同じ方法で実行すると、あたかもページが更新されたかのように、「これは既にデータベースに入力されています」というメッセージが表示されます。

私が使用して(マイナスすべてのレイアウトコード)午前のコードがある:それは何かであるかもしれないので、文は私に少し混乱を取得している場合、私が行くと、ネストされた使用として

<?php session_start(); 

$seen = 0; 
$pageWasRefreshed = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0'; 

$message = $_SESSION['message']; 
$code = $_SESSION['code']; 

require 'inc/database.php'; 

if (!(isset($message) && ($message!==null))) { 
    echo 'You should not be here!'; 
} else { 

    $message = strip_tags(trim($_SESSION['message'])); 

    if ($pageWasRefreshed) { 

     echo 'This has already been entered into the database'; 

    } else { 

     $stmt = $conn->prepare('INSERT INTO data (code, message) VALUES (:code, :pmessage)'); 
     $stmt->execute(array(
      'pcode' => $code, 
      'pmessage' => $message, 
     )); 

    $last_id = $conn->lastInsertId(); 

    echo $last_id . 'Success!'; 

    } 
} 

私は(明らかに)学習していますシンプルですが、Firefoxでは動作し、Chromeでは動作しないため、どこが間違っているかを調べるための仕組みがわかりません。

+8

phpが完全に**サーバーサイド**で実行されるため、chromeとfirefoxはphpコードを異なる方法で評価することはできません。 chromeとfirefox * phpの1行が表示されず、テキストとしての表示以外は何をするべきかわからないでしょう。 –

+1

私が知っている限り、phpはブラウザでは動作しませんが、ブラウザ上でhtmlページを提供するサーバ上で動作します。だから、私の意見では、それはブラウザではなく、別のサーバであることを意味します。 – Andreas

+0

使用しているHTMLコードを表示します。 FranzはブラウザにPHPが表示されないと述べているので、HTML内の何かが異なって表示されています。 – Blinkydamo

答えて

3

あなたの問題はここにある:何らかの理由

isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0'; 

は、スクリプトのため、このHTTP_CACHE_CONTROLヘッダを送信Chromeとあなたが本当にデータが追加されたかどうかの場合にはこれに頼るべきではありません。これは間違った方法です。データが追加されたかどうかを確認するには、彼らが存在する場合は

だけで、データベースに最初

をチェックすることもできますし、フォームを送信し、このキーは、セッション中に既に存在するか

かどうかを確認した後、セッションにいくつかのキーを追加することができます

またはデータをデータベースに適切に追加した後にページをリダイレクトするだけです。

Googleを使用する方法はたくさんあります。 'HTTP_CACHE_CONTROL'を使用するのは1つの大きな間違いです

+1

関連:http://stackoverflow.com/a/24767383/1229023 – raina77ow

+0

いただきありがとうございます。あなたが私に与えたものと@ raina77owからの関連リンクを見ると、私がページリフレッシュをチェックする方法を変更する必要があることがわかります。リンクは非常に有用で、私はそこからいくつかのコードを使用します。 – Fox

関連する問題