0

ifPHPステートメントでPHP変数からJavaScriptに情報を取得しようとしています。何が悪いのかわかりません。PHPコードをエスケープしようとしましたが、PHPコードにPHPコードタグを含めることはできないと思いました。

これが私のコードですが、これは機能しません:

$user =& JFactory::getUser();
if ($user->guest) 
    echo '<script type="text/javascript">_gaq.push([\'_setCustomVar\',1,\'User_Status\',\'Guest\',1])</script>';
    echo '<script type="text/javascript">_gaq.push([\'_setCustomVar\',2,\'UserID\',\'GuestUser\',1])</script>';
} else {
    echo '<script type="text/javascript">_gaq.push([\'_setCustomVar\',1,\'User_Status\',\'LoggedIn\',1])</script>';
    echo '<script type="text/javascript">_gaq.push([\'_setCustomVar\',2,\'UserID\',\' "echo $user->id "\', 1])</script>';
}

手伝ってもらえますか?
どうもありがとう
ジャイ

4

6 に答える 6

1

する必要があります

echo '<script type="text/javascript">_gaq.push([\'_setCustomVar\',2,\'UserID\',\''.$user->id.'\', 1])</script>';

私は推測します...エコーの中にエコーはなく、文字列を経由して接続します.

次のことも試してみてください。

<?php 
   $user =& JFactory::getUser();
   if ($user->guest) {
   ?>
      <script type="text/javascript">_gaq.push(['_setCustomVar',1,'User_Status','Guest',1])</script>
      <script type="text/javascript">_gaq.push(['_setCustomVar',2,'UserID','GuestUser',1])</script>
   <?php
   } else {
   ?>
      <script type="text/javascript">_gaq.push(['_setCustomVar',1,'User_Status','LoggedIn',1])</script>
      <script type="text/javascript">_gaq.push(['_setCustomVar',2,'UserID','<?=$user->id?>', 1])</script>   
   <?php
   }
   ?>

これは読みやすいかもしれません。

于 2013-02-06T12:16:53.890 に答える
0

引用符はあなたの文字列を壊しています!この場合、私は通常、この引用符の間にある文字列の一部を取り、それを変数に入れます。たとえば、$ setcustomvar = "'_ setCustomVar \'"とすると、次のようにエコーコードに追加します。

'<script type="text/javascript">_gaq.push([\'.$setcustomvar.'

等..

他の人が言っているように、文字列の中にエコーを入れることはできません。

于 2013-02-06T12:16:14.850 に答える
0

最後のエコーでそのようなphp変数にアクセスして、user->idを動的に使用することはできません。

echo '<script type="text/javascript">_gaq.push([\'_setCustomVar\',2,\'UserID\',\' '.$user->id.' "\', 1])</script>';
于 2013-02-06T12:17:14.593 に答える
0

javascriptコードは、phpでは文字列と見なされます。変数値を文字列と連結するだけで機能します。

これを試して:

echo '<script type="text/javascript">_gaq.push([\'_setCustomVar\',2,\'UserID\',\'' . $user->id . '\', 1])</script>';
于 2013-02-06T12:17:50.167 に答える
0

それ以外の:

echo '<script type="text/javascript">_gaq.push([\'_setCustomVar\',2,\'UserID\',\' "echo $user->id "\', 1])</script>';

これを試して:

echo '<script type="text/javascript">_gaq.push([\'_setCustomVar\',2,\'UserID\',\' ' . $user->id . '\', 1])</script>';

をネストすることはできませんecho。代わりに、文字列の連結を使用する必要があります。

ただし、完全な効率を得るには、次のことをお勧めします。

<?php
    $user =& JFactory::getUser();
    $userStatus = 'LoggedIn';  // Set default values first.
    $userId = $user->id;
    if ($user->guest) {
        $userStatus = 'Guest'; // Override defaults if the user is a guest.
        $userId = 'GuestUser';
    }
?>
<script type="text/javascript">_gaq.push(['_setCustomVar',1,'User_Status','<?=$userStatus  ?>',1])</script>
<script type="text/javascript">_gaq.push(['_setCustomVar',2,'UserID','<?=$userId ?>',1])</script>
于 2013-02-06T12:18:11.850 に答える
-1

これがうまくいくことを試してください:

$user =& JFactory::getUser();
if ($user->guest) 
    echo '<script type="text/javascript">_gaq.push([\""_setCustomVar"\",1,\""User_Status"\",\""Guest"\",1])</script>';
    echo '<script type="text/javascript">_gaq.push([\""_setCustomVar"\",2,\""UserID"\",\""GuestUser"\",1])</script>';
} else {
    echo '<script type="text/javascript">_gaq.push([\""_setCustomVar"\",1,\""User_Status"\",\""LoggedIn"\",1])</script>';
    echo '<script type="text/javascript">_gaq.push([\""_setCustomVar"\",2,\""UserID"\",\"" $user->id "\", 1])</script>';
}

phpエコー内にecho$user_idを指定する必要はありません。$user_idだけが機能します

于 2013-02-06T12:27:29.460 に答える