-3

以下が私のローカルテストサーバーでは問題なく保存されるのに、ホストされているサーバーでは保存されない理由がわかりません。ドル記号は、私のホスト上で節約できる唯一の値です。すべてローカルに保存します。

両方について、enum('$', '€', '¥', '£')utf8_unicode_ci 照合を使用するタイプの " " があります。

<select name="user_currency" id="user_currency">
    <option value="$" <?php echo ($user_currency == '$'?'selected="selected"':'');?>>$ - Dollar</option>  
    <option value="&euro;" <?php echo ($user_currency == '&euro;'?'selected="selected"':'');?>>&euro; - Euro</option>                      
    <option value="&yen;" <?php echo ($user_currency == '&yen;'?'selected="selected"':'');?>>&yen; - Yen</option>                 
    <option value="&pound;" <?php echo ($user_currency == '&pound;'?'selected="selected"':'');?>>&pound; - Pound</option>               
</select>

クエリ:

    $query = "UPDATE users as us SET user_currency = ".$db->prep($_POST['user_currency'])." WHERE us.user_id = '{$user_id}'";

準備機能

function prep($value,$strip_tags = 1){ 
       // Stripslashes
       if (get_magic_quotes_gpc()) {
           $value = stripslashes($value);
       }
       // Quote if not integer
       if (!is_numeric($value) || $value[0] == '0') {
           $value = "'" . mysql_real_escape_string($value) . "'";
       }           
      if($strip_tags){
            $value = DB::strip_html_tags($value);
       }else{
            $value = DB::strip_html_tags($value,0);
       }           
       return $value;
}   

何か案は?

4

1 に答える 1

0

おそらく、この部分を変更してみてください。

<select name="user_currency" id="user_currency">
    <option value="$" <?php echo ($user_currency == '$'?'selected="selected"':'');?>>$ - Dollar</option>  
    <option value="&euro;" <?php echo ($user_currency == '&euro;'?'selected="selected"':'');?>>&euro; - Euro</option>                      
    <option value="&yen;" <?php echo ($user_currency == '&yen;'?'selected="selected"':'');?>>&yen; - Yen</option>                 
    <option value="&pound;" <?php echo ($user_currency == '&pound;'?'selected="selected"':'');?>>&pound; - Pound</option>               
</select>

することが:

<select name="user_currency" id="user_currency">
    <option value="$" <?php echo ($user_currency == '$'?'selected="selected"':'');?>>$ - Dollar</option>  
    <option value="&amp;euro;" <?php echo ($user_currency == '&euro;'?'selected="selected"':'');?>>&euro; - Euro</option>                      
    <option value="&amp;yen;" <?php echo ($user_currency == '&yen;'?'selected="selected"':'');?>>&yen; - Yen</option>                 
    <option value="&amp;pound;" <?php echo ($user_currency == '&pound;'?'selected="selected"':'');?>>&pound; - Pound</option>               
</select>

そうしないと、ブラウザーは、指定された列挙型と一致しない実際の通貨文字を送信します。[編集] これは、列挙型が HTML エンティティであるためです。内部的に、JPY や USD などの通貨コードを使用するように切り替えることをお勧めしますか?

[明確化の編集: ISO 通貨コードは動き回るのがはるかに簡単であり、通貨関連のリソースのいくつかを利用することに決めた場合、サードパーティ API はそれらを使用する可能性が高くなります。外部サーバーではなくローカルで機能した理由について...ユーザー入力でエンティティ関数のいずれかを使用している場合、エンティティ処理のPHPバージョンの違いである可能性があります。その場合は、ISO 通貨コードを使用する必要があります。]

于 2013-05-20T02:28:31.033 に答える