Добрый день. Есть запрос Code: $db->query(sprintf("INSERT INTO code_files(userid,fileid,`date`,`code`) VALUES(%d,%d,'%s','%s')",$member_id['user_id'],$row['id'],date('Y-m-d H:i:s'),$db->safesql($sms_code))); Поле ввода ( которое проверяет наличие файла + code_files содержимого в таблице ) корректно работает с английскими символами и траслитом. т.е. отвечает ДА на верные, и нет - когда файла нет и в таблице пусто. А вот когда пишу русскими буквами.. запрос, который выше - каким то образом пропускает это все в базу. Вопрос. каким образом поле "code" залочить only английский язык? или как этот запрос может быть модифицировать, что бы он мог только английские буквы и цифры пропускать? спасибо!
Gray_Wolf, Помоги, пожалуйста. мозг кипит уже.. Code: $sms_form = false; if ($member_id['user_group'] > 1 && $row['tarif'] > 0) { // Администраторы качают файл бесплатно // Пришла форма? $sms_code = isset($_REQUEST['sms']) ? trim($_REQUEST['sms']) : ''; $sms_error = ''; if ($sms_code != '') { $code_file = dirname(ENGINE_DIR).'/_codes/'.$row['tarif'].'/'.basename($sms_code); if (file_exists($code_file)) { unlink($code_file); $db->query(sprintf("INSERT INTO sms_files(userid,fileid,`date`,`code`) VALUES(%d,%d,'%s','%s')",$member_id['user_id'],$row['id'],date('Y-m-d H:i:s'),$db->safesql($sms_code))); } else { $sms_error = 'Неправильный код!'; } } $db->query(sprintf("SELECT * FROM sms_files WHERE userid = %d AND fileid = %d",$member_id['user_id'],$row['id'])); $sms_file = $db->get_row(); $db->free(); if (empty ($sms_file)) { $sms_form = true; } } if ($sms_form) { $sms_tarif = $sms_tarifs[$row['tarif']]; $sms_form_html =<<<HTML <span style="color: red; font-weight: bold;">$sms_error</span><br /> Что бы скачать данный файл отправьте смс сообщение <strong>{$sms_tarif['msg']}</strong> на номер <strong>{$sms_tarif['num']}</strong><br /> <form method="post"> И введите полученный код, после чего нажмите отправить:<input type="text" name="sms" /><br /> <input type="submit" value="Отправить" /> </form> HTML; $tpl->set('{url}',$sms_form_html); } else { $tpl->set ( '{url}', "<a class=\"download\" title=\"Скачать файл - " . $row ['title'] . "\" href=\"" . $config ['http_home_url'] . "index.php?do=" . $modulname . "&op=showfile&lid=" . $row ['id'] . "\"><b>Скачать</b></a>" . $email_link ); } Куда вставить (!preg_match('/^([a-zA-Z0-9)$/', $sms) && ?
Code: $sms_form = false; if ($member_id['user_group'] > 1 && $row['tarif'] > 0) { // Администраторы качают файл бесплатно // Пришла форма? $sms_code = isset($_REQUEST['sms']) ? trim($_REQUEST['sms']) : ''; $sms_error = ''; if ($sms_code != '' AND preg_match('/^([a-zA-Z0-9)$/', $sms_code)) { $code_file = dirname(ENGINE_DIR).'/_codes/'.$row['tarif'].'/'.basename($sms_code); if (file_exists($code_file)) { unlink($code_file); $db->query(sprintf("INSERT INTO sms_files(userid,fileid,`date`,`code`) VALUES(%d,%d,'%s','%s')",$member_id['user_id'],$row['id'],date('Y-m-d H:i:s'),$db->safesql($sms_code))); } else { $sms_error = 'Неправильный код!'; } } $db->query(sprintf("SELECT * FROM sms_files WHERE userid = %d AND fileid = %d",$member_id['user_id'],$row['id'])); $sms_file = $db->get_row(); $db->free(); if (empty ($sms_file)) { $sms_form = true; } } if ($sms_form) { $sms_tarif = $sms_tarifs[$row['tarif']]; $sms_form_html =<<<HTML <span style="color: red; font-weight: bold;">$sms_error</span><br /> Что бы скачать данный файл отправьте смс сообщение <strong>{$sms_tarif['msg']}</strong> на номер <strong>{$sms_tarif['num']}</strong><br /> <form method="post"> И введите полученный код, после чего нажмите отправить:<input type="text" name="sms" /><br /> <input type="submit" value="Отправить" /> </form> HTML; $tpl->set('{url}',$sms_form_html); } else { $tpl->set ( '{url}', "<a class=\"download\" title=\"Скачать файл - " . $row ['title'] . "\" href=\"" . $config ['http_home_url'] . "index.php?do=" . $modulname . "&op=showfile&lid=" . $row ['id'] . "\"><b>Скачать</b></a>" . $email_link ); }
L I G A, Спасибо за попытку.. Warning: preg_match(): Compilation failed: missing terminating ] for character class at offset 14 in /home...../files_download.php on line 331 Это в шапке.. $sms_error = 'Неправильный код!'; сюда даже не доходит. + в таком варианте не работает вообще проверка :-(
Code: $sms_form = false; if ($member_id['user_group'] > 1 && $row['tarif'] > 0) { // Администраторы качают файл бесплатно // Пришла форма? $sms_code = isset($_REQUEST['sms']) ? trim($_REQUEST['sms']) : ''; $sms_error = ''; if (preg_match('/^([a-zA-Z0-9]+)$/', $sms_code)) { $code_file = dirname(ENGINE_DIR).'/_codes/'.$row['tarif'].'/'.basename($sms_code); if (file_exists($code_file)) { unlink($code_file); $db->query(sprintf("INSERT INTO sms_files(userid,fileid,`date`,`code`) VALUES(%d,%d,'%s','%s')",$member_id['user_id'],$row['id'],date('Y-m-d H:i:s'),$db->safesql($sms_code))); } else { $sms_error = 'Неправильный код!'; } } $db->query(sprintf("SELECT * FROM sms_files WHERE userid = %d AND fileid = %d",$member_id['user_id'],$row['id'])); $sms_file = $db->get_row(); $db->free(); if (empty ($sms_file)) { $sms_form = true; } } if ($sms_form) { $sms_tarif = $sms_tarifs[$row['tarif']]; $sms_form_html =<<<HTML <span style="color: red; font-weight: bold;">$sms_error</span><br /> Что бы скачать данный файл отправьте смс сообщение <strong>{$sms_tarif['msg']}</strong> на номер <strong>{$sms_tarif['num']}</strong><br /> <form method="post"> И введите полученный код, после чего нажмите отправить:<input type="text" name="sms" /><br /> <input type="submit" value="Отправить" /> </form> HTML; $tpl->set('{url}',$sms_form_html); } else { $tpl->set ( '{url}', "<a class=\"download\" title=\"Скачать файл - " . $row ['title'] . "\" href=\"" . $config ['http_home_url'] . "index.php?do=" . $modulname . "&op=showfile&lid=" . $row ['id'] . "\"><b>Скачать</b></a>" . $email_link ); } заменил $sms_code != '' на : Code: if (preg_match('/^([a-zA-Z0-9]+)$/', $sms_code)) { т.к. если значение переменной $sms_code='' вернет false=>условие не выполнится.
L I G A, теперь не ругается в шапке.. но все равно до проверки и else не доходит ( а уж темболее до запроса) MySQL вернула пустой результат (т.е. ноль строк). ( запрос занял 0.0001 сек. )
какие символы передаешь ,a-zA-Z0-9 ?если нет, то так и должно быть,потому как условие не выполняется.
L I G A, смс_код вида md5 первые 6 символов ( так я реализовал рандом генерацию ) т.е. например cdd85c да .. и при ввода любого бреда .. или же русских символов.. скрипт перестал отвечать, что " $sms_error = 'Неправильный код!';" а раньше - отвечал естественно. ..
пробуй так: Code: $sms_form = false; if ($member_id['user_group'] > 1 && $row['tarif'] > 0) { // Администраторы качают файл бесплатно // Пришла форма? $sms_code = isset($_REQUEST['sms']) ? trim($_REQUEST['sms']) : ''; $sms_error = ''; if (preg_match('/^([a-zA-Z0-9]+)$/', $sms_code) and strlen($sms_code)=='6') { $code_file = dirname(ENGINE_DIR).'/_codes/'.$row['tarif'].'/'.basename($sms_code); if (file_exists($code_file)) { unlink($code_file); $db->query(sprintf("INSERT INTO sms_files(userid,fileid,`date`,`code`) VALUES(%d,%d,'%s','%s')",$member_id['user_id'],$row['id'],date('Y-m-d H:i:s'),$db->safesql($sms_code))); } else { $sms_error = 'Неправильный код!'; } } $db->query(sprintf("SELECT * FROM sms_files WHERE userid = %d AND fileid = %d",$member_id['user_id'],$row['id'])); $sms_file = $db->get_row(); $db->free(); if (empty ($sms_file)) { $sms_form = true; } } if ($sms_form) { $sms_tarif = $sms_tarifs[$row['tarif']]; $sms_form_html =<<<HTML <span style="color: red; font-weight: bold;">$sms_error</span><br /> Что бы скачать данный файл отправьте смс сообщение <strong>{$sms_tarif['msg']}</strong> на номер <strong>{$sms_tarif['num']}</strong><br /> <form method="post"> И введите полученный код, после чего нажмите отправить:<input type="text" name="sms" /><br /> <input type="submit" value="Отправить" /> </form> HTML; $tpl->set('{url}',$sms_form_html); } else { $tpl->set ( '{url}', "<a class=\"download\" title=\"Скачать файл - " . $row ['title'] . "\" href=\"" . $config ['http_home_url'] . "index.php?do=" . $modulname . "&op=showfile&lid=" . $row ['id'] . "\"><b>Скачать</b></a>" . $email_link ); }
L I G A, спасибо тебе добрый человек! Век не забуду) помогло. сколько "х**х**" и в прочих вариациях теста писал туда это слово, враг не прошел) только иногда рандомно принтится фраза "Неправильный код!" но это бог с ним! главное работает) Еще раз спасибо. Тему можно закрывать.
тому кто писал тебе эту регулярку: Code: (!preg_match('/^([a-zA-Z0-9)$/', $sms) Руки поотрубать! я сперва не глянул,потому и был синтаксис эррор+ условие не выполнялось из-за отсутствия квантификатора "+"(в данном случае). + добавил проверку на длину, =='6' символов.