2011-10-18 10 views
0

私は単純なif/else文をJavascript & PHP(jQuery cookie plugin)で試しています。Javascriptとif/else文の両方を実行するPHP

私の問題:このスクリプトが起動するたびに、IFとELSEの両方のステートメントが実行されます。私のクッキーが設定されていても、新しいクッキーが作成され、それが私のデータベースに追加されます。両方の言語を正しく使用していますか?

<script type="text/javascript"> 

//check to see if cookie is present 
if ($.cookie('uid')) { 
    var userCookie = $.cookie('uid'); 
    alert(userCookie);  

} 
else { 
    //create cookie and check to see if it is taken 
    <?php 
    $success = false; 
    while (!$success) { 
     $cookie = createUniqueCookie(); 
     $success = checkIfCookieIsTaken($cookie); 
    }  

    //store into database and set into browser 
    if ($result = $mysqli->query("INSERT INTO users (cookie) VALUES ('" . $cookie . "')")) { 
    ?> 
       $.cookie('uid', '<?php echo $cookie ?>', { expires: 730, path: '/' }); 
       var userCookie = $.cookie('uid'); 
       alert('new cookie for user is '+ userCookie); 
    <?php 
    } 
    ?> 
} 

答えて

3

あなたは同時にPHPとJavaScriptを実行しようとしているように見えます:ここでは

は、それがどのように見えるのです。それはそのようには機能しません。

すべてのPHPがサーバ上で実行されています。すべてのビットが解析され、結果のコードがブラウザに送信されます。そこにブラウザで実行されるjavascriptがある場合、 'evil'はすでに完了しています。

あなたはちょうどそのようクライアントとサーバーのコードを混在させることはできません:)

1

PHPはサーバ上で実行されます。 Javascriptはクライアント(ブラウザ)上で実行されます。

このスクリプトのWebサーバへのリクエストが行われた場合、PHPは ?>タグの間にないすべてのものを無視し、残りの部分をそのままブラウザーに送ります。ブラウザは、結果のファイルを解析/実行します。

これを念頭に置いて設計をもう一度進めてください。あなたはそれをしようとしている方法で言語を混在させることは不可能であることがわかります。あなたの特定のケースでは、これはすべてサーバー側で行う必要があります。

関連する問題