0

このブラックジャック ゲームのコードを使用して、独自の完全版を作成しました。

すべてが Xampp を使用してローカルで完全に機能しますが、完全なバージョンをアップロードすると、次のようになります。

私はPHPに非常に慣れていませんが、私が理解していることから、配列を定義しました。オンラインでブール値を取得し、オフラインで配列を取得するのはなぜですか?

ここに私が書いた完全なゲーム があります.(サイトは少しNSFWっぽいですが、ページはきれいです)

問題はここからのようです:

function evaluateHand($hand) {
$Ace=0;
global $faces;
$value = 0;
foreach ($hand as $card) {
    if ($card['face'] == 'Ace') 
        $Ace++;

 $value = intval($value) + intval($faces[$card['face']]);

   while ($Ace>0 && $value >21)
        {
            $value = intval($value) - 10;
            $Ace--;
        }

}

特に - foreach ($hand as $card) { 部分。

同じ問題を抱えている他の人を読んだことを覚えています。解決策は、ここで二重引用符から単一引用符に切り替えることのようでした。

<input type='hidden' name='handstr' value = '<?php echo $handstr ?>' />

しかし、私はすでに一重引用符を持っています。

私を本当に混乱させているのは、スクリプトを書いた人が問題なく動作しているように見えることです。

.PHP を .txt に変更すると、完全なゲーム コードが表示されます (上記のリンクから...申し訳ありませんが、最大 2 リンク)。

オフラインがオンラインと異なる理由と、問題を解決する方法を知っている人はいますか?

4

1 に答える 1

0

serialize()の出力は、HTML フォーム フィールドに直接含めるのには適していないことに注意する必要があります。Null バイト、一重引用符、二重引用符など、HTML で許可されていない文字が含まれている場合があります。

serialize()次のように、出力をBase64 でラップすることをお勧めします。

<input type='hidden' name='dealerstr' value = '<?php echo base64_encode($dealerstr) ?>' />

もちろん、base64_decode()アンシリアライズする前にデータを POST する必要もあります。

于 2013-02-13T12:40:38.013 に答える