2016-05-06 21 views
-1

私はユーザーからのログイン変数を使用するhtml/php複合文書を持っています。 (これは、サインイン上の別のphpファイルから来た):phpファイルからjsファイルにphp変数を渡すには?

<html> Welcome <?php echo $login; ?> </html> 

//Now when the user uses the chatbox, and clicks send, I would like to pass the data (inclusive of the username) from this html file to the .js so it can in turn pass onto another php file. (ps I tried the following but to no avail, as the .js file is external to the html/php composite): 

    $("#newMsgSend").click(function()//triggers script to send the message 
     { 
      $("#newMsgCnt").val(''); // clears the box when the user sends a message 
      var username = "<?php echo $login; ?>"; 
      alert(username); 
     }); 
+0

どこから$ loginを取得しますか?それはどこに割り当てられていますか?どのように最初の場所でHTMLページに渡されますか? – shamsup

+0

グローバルスコープで 'var username'を使うことはできません。入れ子になっているjQuery関数の中からそれを削除するだけですか? – Rasclatt

+0

私が送信した瞬間に警告が表示される<?php echo $ login; ?>をユーザ名として使用します。私はそれが変数を読んでいないことを知っています。 –

答えて

3

あなたの現在のコードは、おそらくXSS vulnerabilityを導入しています。代わりに、有効なJavaScriptの有効なJSONがあるという事実を利用:

var username = <?php echo json_encode($login); ?>; 

をいくつかの状況では、それはまた、使用する方が良いかもしれXMLHttpRequestまたは別のURL(通常はプレーンテキストとしてエンコードされたデータを要求WebSocket、 XMLまたはJSON)。そのための1つのシナリオは、ユーザーがWebページをロードした後に新しい項目が追加された後にユーザーに通知することです。

+0

XSS以外にも、文字列内のタブがページを壊すでしょう –

+0

@Juan Mendesどのようにそうですか? [ここにレンダリングされたタブ付きのページ](https://jsfiddle.net/phihag/abqk6g7h/)はうまく動作します。 – phihag

+0

実際に彼は正しいです。それは何らかの理由でスクリプトを壊してしまったのです。 –

0

ユーザーがログインするときに、そのユーザーのセッションを作成し、データベースからのユーザー名、電子メール、電話番号などのデータを次のように入力します(ログインが正しいと仮定して、

$_SESSION['user'] = $row; //where $row is the row of data returned from the db 

次にあなたがその情報にアクセスしたいときは、ページの上部に次のものがあります。その後、

session_start(); 

と、このような

などの情報にアクセスしますセッション開始は、あなたがsessiobn変数にアクセスするために欠けている各ページの一番上になければならないこと

<h1> Welcome <?php echo "$userfirst_name"; ?> </h1> 

注:

$userfirst_name=$_SESSION['user']['first_name']; 

、あなたのHTMLは次のようになります。両方に

unset($_SESSION["user"]); 
-2

ありがとう::次に、このようなユーザーは次のような使用することができますログアウトしたときのように(ユーザの詳細をクリアする。イバン・ロドリゲス・トーレスとphihagを私は両方のポストの途中でどこかに解決策を得た:

しかし イワンの提案は、何らかの形で私のために「未定義」の変数を返していました
<input id="login" readonly type="text" <?PHP echo "value= '$login'/>"; ?> 

。魔法のように上記作品。何の問題への安全とdoesntのリードを願っています。

おかげで再び男

+0

これをフォームの一部として使用している場合は、そのままフォームには含まれないため、name属性が必要です。またあなたのエコーが間違った場所にある場合、コード内の読みやすさを減らすためにecho = nmakeの中にvalue =の部分は必要ありません。 - それはvalue = "<?PHP echo '$ login';?>"でなければなりません。 – gavgrif

+0

あなたはphihagの素晴らしい提案の後でこのオプションを使用したことに気づかなければなりません。あなたのコードはXSSの影響を受けやすいです。 –

関連する問題