2016-05-18 7 views
0

私は、さまざまな製品を注文するために使用されるWebフォームを持っています。フォームの背後にあるロジック(DB接続など)はPHPで書かれています。今、Googleアナリティクスを介して送信されたフォームをイベントとして追跡したいと考えています。JavaScriptでサーバ変数にアクセスする

お客様がチェックボックスで注文する製品を選択できるフォームは1つだけです。これは可変なので、単にonClickイベントでGA関数を呼び出すことはできません。 var ordertype = <?php echo $_POST['order']; ?>;

この仕事をしていますが、いつでもページ:私のソリューションは、$ _POST [「順序」]にアクティブなチェックボックスを作成し、その後、このように、機能ga('send', 'event',...)のパラメータを埋めるためにはJavaScriptを経由して、そのデータを引っ張っていました私のJSはvar ordertype = ;のように見えますが、コンソール上でエラーが発生します(もちろん)。 var ordertype = <?php echo if(isset($_POST['order']); ?>;のようなものを使用すると、何も出力されないので、どちらも動作しません。

私はこれをもっと上品に行うことができますか?

+0

'var ordertype =" <?php echo htmlentities($ _ POST ['order']);?> ";' その後 'if(ordertype)ga( 'send'、 'event'、...) 、... - あなたはあなたのデータをきれいにする必要があるか、人々はものを注入することができます – mplungjan

+0

ヒントのおかげで、それを考えなかった! – DCH

+0

データを消去するには、PHPのフィルタ関数(例:http://php.net/manual/en/function.filter-input.php)を参照してください。 –

答えて

1

はちょうどあなたのエコー内var ordertype =を置く:

<?php if(isset($_POST['order'])){ 
    echo 'var ordertype = ' . $_POST['order'] . ';' 
}?> 

その方法を$_POST['order']が設定されていない場合、ordertypeは全く定義されません。別の値に設定したい場合は、else節を追加してください。

0

この回避策を使用します。これにより

var ordertype = ''+<?php echo if(isset($_POST['order']); ?>;

をポスト値が存在しない場合、変数ordertypeは空の文字列になり、後でそれを持っているとして、あなたはそれを更新した値を割り当てることができます既に上で宣言されています。

+0

これは、ordertypeがnumricでない限り、 'var ordertype = '' + someorder;'になります。 – mplungjan

関連する問題