Я храню смс, полученные от twilio, в базе данных, чтобы потом использовать их. Когда я сделал это в песочнице, это сработало. Однако, когда я перешел на обычный телефонный номер, полученный номер такой же, как был отправлен, но +1 (или для xxxxxxxxxx, где x - это исходный номер, это больше похоже на 1xxxxxxxxxx +)
Поэтому я изменил mysql_query следующим образом: но он все еще не работает. Что можно сделать, чтобы узнать, что это оригинальный номер телефона?
<?php
$starttime = time();
$number = $_POST['number'];
$number1 = "1" . $number;
$number2 = $number . "1";
$number3 = "+1" . $number;
$number4 = $number . "+1";
$number5 = "+" . $number . "1";
$number6 = "1" . $number . "+";
$number7 = $number."1+";
$received = mysql_query("SELECT * FROM sms_received
WHERE (responder='$number' OR responder='$number1'
OR responder='$number2' OR responder='$number3'
OR responder='$number4' OR responder='$number5'
OR responder='$number6' OR responder='$number6')
AND (body='y' OR body='yes' OR body='Y' OR body='Yes' OR 'yea' OR 'Yea')
AND timestamp BETWEEN ".date('Y-m-d H:i:s', strtotime($starttime))." AND NOW()");
?>
Но, тем не менее, ничего не получено. Любые идеи, как еще я могу проверить, была ли получена смс от пользователя? Я могу видеть в базе данных, что это там ... но mysql не находит это. Это работало раньше, когда отправленное число было идентично номеру, полученному от, но с добавленным +1 он облажался (в предыдущем коде просто было WHERE responder = '$number'
, и оно работало, но дополнительные переменные не помогли).
В этом коде слишком много ИЛИ? Это даже проблема?
UPDATE:
Спасибо, вот функция, которую я использую, чтобы сократить число до формата xxxxxxxxxx, прежде чем сохранить его в базе данных:
function checkPhone($responder){
$items = Array('/\ /', '/\+/', '/\-/', '/\./', '/\,/', '/\(/', '/\)/', '/[a-zA-Z]/');
$clean = preg_replace($items, '', $responder);
if (substr($clean, 0, 1) == "1") {
return substr($clean, 1, 10);
}
else {
return substr($clean, 0, 10);
}
}
$number = checkPhone($responder);