3

システムにバッジを表示しようとしています。バッジはユーザーへの報酬/成果です。彼らは自分のプロフィールに表示されます。うまくいくのは画像/バッジの表示ですが、バッジの理由はそうではありません。

こんな感じにしてみました

<?
    $badgesql = mysql_query("select * from usr_badge where user = '$user'");
    $user2 = mysql_query("select * from usr_users where username = '$user'");
    $usr2 = mysql_fetch_array($user2);
    $vipsql = mysql_query("select * from usr_vip where userid = '$usr2[id]'");
    $vipcheck = mysql_num_rows($vipsql);
    $badgecheck = mysql_num_rows($badgesql);
    $checkit = $badgecheck + $vipcheck;
    if($checkit==0)
    echo("This user does not have any badges");
    else
    if($badgecheck!=0)
    {
    while($badge = mysql_fetch_array($badgesql))
    {
    echo('<a onclick="TINY.box.show({html:'Reason: '.$badge[reason].',animate:false,close:false,mask:false,boxid:'success',autohide:2,top:-14,left:-17})"><img src="'.$badge[badge].'" </a>');
    }
    }
    //Display VIP Badges
    if($vipcheck!=0)
    {
    $vipbadge = mysql_fetch_array($vipsql);
    $vip1 = mysql_query("select * from usr_vipdb where id = '$vipbadge[vipid]'");
    $vip2 = mysql_fetch_array($vip1);
        echo('<img src="'.$vip2[url].'" alt="This user is a VIP!" />');
    }
    ?>

しかし、上記のコードは機能しません。ページを表示しようとすると、「解析エラー: 構文エラー、予期しない T_STRING in /home/ * * /public_html/memb.php on line 167」というエラーが表示されます。

誰かが私が間違っていることを教えてくれますか、正しい方向に向けてくれますか?

前もって感謝します

4

2 に答える 2

2

で始まる長い行に問題がある可能性があります。ここechoで強調表示されている構文が壊れており、引用符または類似のものを誤って一致させた可能性があります。(バラバラにします。各小さなセグメントを独自の行に作成します。そうすれば、間違いを見逃すことはありません。)

インタープリターが解析すると信じているため、現在のコードは次のように壊れています。

echo('<a onclick="TINY.box.show({html:'
Reason: '.$badge[reason].'
,animate:false,close:false,mask:false,boxid:
'success'
,autohide:2,top:-14,left:-17})
"><img src="
'.$badge[badge].'
" </a>');

裸の単語で始まる行に注意してくださいReason:。それはあなたが得たエラーではないので、おそらく私は間違って推測しましたが、あなたの現在のコードがあまりにも乱雑であることは間違いありません.

クロスサイト スクリプティングの脆弱性SQL インジェクションの脆弱性から保護するために、ここに示されていないコードで入力 ( $user$usr2[id]) と格納されたデータ ( )をサニタイズしていることを願っています。$badge[reason]

于 2012-05-30T02:12:37.037 に答える
1

これを試してください(開始/終了の引用符を修正...と思います)

<?
    $badgesql = mysql_query("select * from usr_badge where user = '$user'");
    $user2 = mysql_query("select * from usr_users where username = '$user'");
    $usr2 = mysql_fetch_array($user2);
    $vipsql = mysql_query("select * from usr_vip where userid = '$usr2[id]'");
    $vipcheck = mysql_num_rows($vipsql);
    $badgecheck = mysql_num_rows($badgesql);
    $checkit = $badgecheck + $vipcheck;
    if($checkit==0) {
        echo("This user does not have any badges");

    } else {
        if($badgecheck!=0)
        {
            while($badge = mysql_fetch_array($badgesql))
            {
                echo('<a onclick="TINY.box.show({html: "Reason: '.$badge[reason].'",animate:false,close:false,mask:false,boxid:"success",autohide:2,top:-14,left:-17})"><img src="'.$badge[badge].'" /></a>');
            }
        }
        //Display VIP Badges
        if($vipcheck!=0)
        {
            $vipbadge = mysql_fetch_array($vipsql);
            $vip1 = mysql_query("select * from usr_vipdb where id = '$vipbadge[vipid]'");
            $vip2 = mysql_fetch_array($vip1);
            echo('<img src="'.$vip2[url].'" alt="This user is a VIP!" />');
        }
    }
?>
于 2012-05-30T02:14:52.877 に答える