PHP 関数で少し問題が発生しています。
160 文字で 1 SMS クレジット、320 文字で 2 SMS クレジットを差し引く PHP 関数を作成しましたが、最近、151 文字または 160 未満のテキストでは 2 SMS クレジットが差し引かれることに気付きました。隠し文字があるのか、特定の文字列をエスケープしなかったのかはわかりません。
以下はPHPコードです。
//=== function to deduct credit per sms
function deduct_sms_credit( $user_id, $msg ) {
$per_sms = 160;
//calculate the no. Of sms pages with ceil() function
$no_pg_sms = ceil( strlen( $msg ) / $per_sms );
$sms_amount = $no_pg_sms;
$query = "SELECT * FROM sms_history WHERE user_id=".$user_id."";
$result = mysql_query( $query );
while( $rs = mysql_fetch_array( $result ) ) {
$remaining = $rs['remaining'] - $sms_amount;
$spent = $rs['spent'] + $sms_amount;
}
$qupdate = "UPDATE sms_history SET `remaining` = ".$remaining.", `spent` = ".$spent." WHERE user_id = ".$user_id."";
mysql_query( $qupdate );
}
これを含むテキストメッセージを送信してみました:
親愛なるお客様、先週ログイン中に発生した問題についてお詫び申し上げます。以下のリンクに従ってパスワードをリセットしてください。
http://bit.ly/i5ud1zhm,www.boltsns238.com
1 クレジットではなく 2 クレジットが請求されました。問題をトリム、エスケープ、または解決するための PHP 関数について助けが必要です。