Доброго дня всем, в общем стоит задача доработать форму обратной связи таким образом, чтобы обращение отправлялось после подтверждения телефона(стали получать много не целевых анонимных обращений)
Не придумал ни чего лучшего как доработать саму форму добавив поле ввода кода подтверждения и две кнопки submit - запросить код/подтвердить номер.
Это набросок формы с двумя кнопками - посылает код и проверяет его.
Данный код рабочий. На запись инфы в файл необращайте внимание, в последствии все будет писаться в базу, мне сейчас в первую очередь необходимо подтверждение номеров.
После чего перенес код в шаблон формы обратной связи. В итоге получаю при нажатии любого из submit отправку обращения.
Может кто сталкивался с подобным и знает решение.
Не придумал ни чего лучшего как доработать саму форму добавив поле ввода кода подтверждения и две кнопки submit - запросить код/подтвердить номер.
Это набросок формы с двумя кнопками - посылает код и проверяет его.
Код |
---|
<?php //header("Content-Type: text/xml; charset=UTF-8"); Include('BEESMS.class.php'); echo "<sc ript>parent.document.getElementById('_out').innerHTML = '"; // Генерируем случайное число $rnd=rand(10000,99999); if (isset ($_POST["sendsms"])){ // Проверка корректности введенного номера if(iconv_strlen($_POST['PHONE'])>=6){ $i=0; // Открываем "file.txt" в режиме чтения $fp = fopen("file.txt", "r"); if ($fp){ while (!feof($fp)){ $mytext = fgets($fp); $array[$i]=trim($mytext); $i++; } } fclose($fp); $PHONE = $_POST['PHONE']; $key = array_search($PHONE, $array); // Запись номера и кода в файл if($key===FALSE){ $filename = 'file.txt'; $somecontent = "\n".$_POST["PHONE"]."\n".$rnd; // Вначале давайте убедимся, что файл существует и доступен для записи. if (is_writable($filename)){ // В нашем примере мы открываем $filename в режиме "дописать в конец". // Таким образом, смещение установлено в конец файла и // наш $somecontent допишется в конец при использовании fwrite(). if (!$handle = fopen($filename, 'a')) {exit;} // Записываем $somecontent в наш открытый файл. if (fwrite($handle, $somecontent) === FALSE){exit;} fclose($handle); } // Посылаем запрос на отправку кода подтверждения на введенный пользователем номер $sms_text='Ваш код:'.' '.$rnd; $target=$PHONE; //Поле Телефон, заполненное пользователем $sender_name='sender name'; $sms= new BEESMS('user','pass'); $result=$sms->post_message($sms_text, $target, $sender_name); echo $result; echo "Код подтверждения отправлен на номер ".$_POST["PHONE"]; } else {echo "На номер уже был отправлен код";} }else{echo "Короткий номер";} } // Проверка кода if (isset ($_POST["ok"])) { $i=0; // Открываем "file.txt" в режиме чтения $fp = fopen("file.txt", "r"); if ($fp){ while (!feof($fp)){ $mytext = fgets($fp); $array[$i]=trim($mytext); $i++; } } $arr=$array; fclose($fp); $PHONE = $_POST['PHONE']; $key = array_search($PHONE, $arr); $code=$arr[$key+1]; $PHONEex=$arr[$key]; if ($code == $_POST["code"] && $PHONEex==$_POST["PHONE"]){ echo "Номер активирован"; // Удаление номера с кодом из файла $file=file("file.txt"); $fp=fopen("file.txt","w"); for($i=0;$i<sizeof($file);$i++){ if($i==$key){ unset($file[$i]); unset($file[$i+1]); } } fputs($fp,implode("",$file)); fclose($fp); }else{echo "Неверный номер или код подтверждения";} } echo "'</sc ript>"; ?> <fo rm method="post" action="" target="ifr"> <table> <tr><td>Номер телефона<td><input name="PHONE"> <input type="submit" name="sendsms" value="Выслать код"> <tr><td><br/> <tr><td>Код подтверждения<td><input name="code" size="6"> <tr><td><br/> <tr><td><input type="submit" name="ok" value="Подтвердить"><td colspan="2" id="_out"> </table> </form> <ifr ame name="ifr" frameborder="0" height="0" width="0" style="visibility:hidden"></iframe> |
После чего перенес код в шаблон формы обратной связи. В итоге получаю при нажатии любого из submit отправку обращения.
Может кто сталкивался с подобным и знает решение.