| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > проверочный код |
| Автор: hripun 15.4.2009, 18:59 | ||||
Написал форму регистрации вставил код с циферками для проверки , но не могу сделать что бы проверял подленность кода(( любвые цифры вносиш и все равно регит(( что еще нужно ?
register_new.php
|
| Автор: NNaarreekk 15.4.2009, 19:32 | ||
Сделай:
и посмотри что выводит. Если не совпадают а регистрация все равно идет,то $_POST["code"] замени на $code (Может Пост где-то меняется). |
| Автор: hripun 15.4.2009, 19:39 | ||||
попробовал :
И так :
Выводит только Parse error: parse error, unexpected T_THROW in T:\home\localhost\www\registr\register_new.php on line 68 |
| Автор: enof 15.4.2009, 19:43 |
без знания синтаксиса языка? точку с запятой поставьте. |
| Автор: hripun 15.4.2009, 19:48 |
| Да знания очень слабые по этому и спрашиваю совета!я только учусь всему . Смейся если хочеш ) мне не стыдно спрашивать то что не знаю только не понял где запятую надо поставить( |
| Автор: bars80080 15.4.2009, 20:03 | ||||
так вот же, точка с запятой в конце
|
| Автор: enof 15.4.2009, 20:05 | ||
Я не смеялся, а просто усомнился в том, что код был написан вами, ибо без знаний синтаксиса вообще-то это сложно. die() - функция(точнее языковая конструкция). В PHP каждая инструкция должна завершаться точкой с запятой, а так как выражение
и является инструкцией, то нужно поставить ; p.s. Чтобы прочитать описание любой функции, нужно к адресу http://php.net/ добавить название функции. http://php.net/die |
| Автор: hripun 15.4.2009, 20:07 | ||
просто до конца код не вставлял ,думал не нужен ) вот что дальше
а точка с запятой там не чего не меняет с ; в конце вот такая ошибка Notice: Undefined index: code in T:\home\localhost\www\registr\register_new.php on line 66 ==4324 |
| Автор: bars80080 15.4.2009, 20:12 |
странно, я думал даже при вырубленных ошибках такая синтаксическая ошибка вызовет фатальное завершение работы |
| Автор: hripun 15.4.2009, 20:13 |
| Просто ошибки меняются и всё ( а работать не хочет |
| Автор: enof 15.4.2009, 20:15 |
| Какие ошибки? |
| Автор: hripun 15.4.2009, 20:19 | ||||
с таким кодом без кавычек
пишет : Parse error: parse error, unexpected '{' in T:\home\localhost\www\registr\register_new.php on line 67 с таким кодом
пишет : Notice: Undefined index: code in T:\home\localhost\www\registr\register_new.php on line 66 ==4324 Во как.. |
| Автор: enof 15.4.2009, 20:23 |
| session_start() ? |
| Автор: hripun 15.4.2009, 20:26 |
| не пойму вопроса.. |
| Автор: enof 15.4.2009, 20:28 |
| http://php.net/session_start |
| Автор: hripun 15.4.2009, 20:36 | ||
а конуретно ребят кто может сказать как мне исправить ошибку ? просто если убрать проверку
этого кода все регит и проверяет отлично.... дело только в этой проверке... |
| Автор: enof 15.4.2009, 20:42 |
| Вы так далеко не уедите. Я привел вам ссылку на ман, что именно вам не ясно? Вы хотя бы посмотрели, что там? Перед использованием сессии нужно ее инициализировать. Для этого и предназначена функция session_start() Вызывать ее нужно до любого вывода. Почему, поймете потом, когда разберетесь, что из себя представляет протокол http. |
| Автор: hripun 15.4.2009, 20:52 |
| хех.. Вы мне дали то что я и так смотрю, смотрел и еще долго смотреть буду.... С сесией у меня все норм так как я уже говорил без этой конкретно проверки все норм регится. Я вот думал что какой нить конкретно покажут косяк который у меня не получается и помогут конкретнее его решить... |
| Автор: enof 15.4.2009, 21:09 |
| Приведите полностью код, который не работает. Похоже на php.net вы так и не побывали. |
| Автор: hripun 15.4.2009, 21:12 | ||||
Добавлено @ 21:15
|
| Автор: enof 15.4.2009, 21:45 |
Да я сразу понял, потому что die() было названо проверкой, и после этого почему-то ничего не работало. Хотел чтобы сам дошел, видимо не нужно это |
| Автор: hripun 15.4.2009, 21:55 |
| Заменил все как написали... но вот теперь что пишет Parse error: parse error, unexpected T_THROW in T:\home\localhost\www\registr\register_new.php on line 64 ругается на эту строчку- throw new Exception('<h4>Неправильно введен код проверки.<br>' . ' Пожалуйста вернитесь и повторите попытку.</h4><h4> |
| Автор: enof 15.4.2009, 22:00 |
| Это синтаксическая ошибка, без кода понять, в чем именно косяк, невозможно. |
| Автор: NNaarreekk 15.4.2009, 22:03 |
| Если честно то я вообще не понимаю что это за throw new Exception! В РНР есть такая штука или рукописная? |
| Автор: enof 15.4.2009, 22:09 |
| NNaarreekk, |
| Автор: hripun 15.4.2009, 22:17 |
| throw new Exception! я если честно сам слабо догояю что такое((( так написано в книге по PHP там кстати написано то что мне Enof давал в ссылке.. Я уже говорил что только учусь всему .. но понять из книг без чьей то помощи мне очегь тяжко ,по тому как там сильно заумно написано .. Написано примерно это ---Ключевое слово throw (от англ. - выбросить) предназначено для того, чтобы передать управление блоку catch. Для передачи текста ошибки в блок обработки исключения мы использовали класс Exception |
| Автор: NNaarreekk 15.4.2009, 22:29 | ||
| hripun, выброси эту книгу на х.... к черту! Для новичка такие штучки не нужны... Сначала сделай обычным echo, a потом если захочешь чтоб твой код никто не понял перейди на эти throw! т.e.:
|
| Автор: enof 15.4.2009, 22:37 | ||
NNaarreekk, В ваших постах чувствуется высокомерие и это выглядит смешно, особенно фразы типа этой
hripun, Что за книга? Купите нормальную. |
| Автор: hripun 15.4.2009, 22:40 |
| последую совету ) хотя и эта книга не плоха..только не для моих мозгов ведат)) вы мне можете посоветовать хоть что то по данной теме вопроса ? как сделать эту чертовы проверку ???????? |
| Автор: NNaarreekk 15.4.2009, 22:42 |
| hripun, везде измени эти trow на echo и потом посмотри что выдаст. Там уже видно будет. |
| Автор: hripun 15.4.2009, 22:53 |
| заменил ... тоже самое тока вид с боку Parse error: parse error, unexpected T_ECHO in T:\home\localhost\www\registr\register_new.php on line 64 |
| Автор: NNaarreekk 15.4.2009, 23:03 |
| Это значит ; забыл поставить...посмотри строкой выше что не так! |
| Автор: bars80080 16.4.2009, 00:11 |
![]() |
| Автор: Photon 16.4.2009, 05:32 |
| Лично у меня только один вопрос: в том файле, где определяется (а лучше в том, где используется) функция display_registration_form вообще есть session_start() Если его там нет, так какого ж пихать в $_SESSION['code'] какие-то значения? |
| Автор: hripun 16.4.2009, 10:22 | ||||
вообще эта строка,отвечает за остановку выполнения сценариев, если код безопасности введен не верно:
throw new Exception нужен для генерации исключений, напр. не введено имя /пароль,он выдает сообщение об ошибке.. Вот что было у меня изначально:
при замене die на if упорно выдает ошибку, однако при замене throw new Exception на echo регистрация проходит,но код безопасности не проверяеться,так что менять смысла нет. Добавлено через 9 минут и 56 секунд Photon session_start() конечно же имееться,и стоит там,где ему нужно стоять. Дальше начинаеться блок try,в котором и происходит вся работа. |
| Автор: hripun 16.4.2009, 10:46 |
| Думаю вся проблема в том,что нужно дописывать в throw new Exception какие то параметры,а не тупо заменять одно другим. |
| Автор: Photon 16.4.2009, 12:58 |
| Короче, весь код в студию. И тот, где вызывается display_form_registration, и тот, где происходит обработка. С указанием имен файлов, в которых этот код лежит. |
| Автор: hripun 16.4.2009, 13:06 | ||
пробывал заменять
и в registration_form так же ставить session_start();...Начинаю регистрироваться - пишет не правильно введен пароль.. |
| Автор: hripun 16.4.2009, 13:27 |
| [code=php] <?php require_once('bookmark_fns.php'); do_html_header('Регистрация пользователей'); session_start(); pravila_registracii(); display_registration_form(); do_html_footer(); ?> |
| Автор: Photon 16.4.2009, 13:27 | ||||
Бля..
Хрен ли после if делает точка с запятой? А в другом файле:
|
| Автор: hripun 16.4.2009, 13:43 |
| Ну что тут скажешь..надо быть внимательнее к мелочам) Спасибо за помощь |
| Автор: Shark 16.4.2009, 14:45 | ||||||||
а зачем нужна эта
в таком случае либо вообщене писать строчку $code=$_POST['code'];, либо писать так:
и безопаснее писать так:
|
| Автор: Photon 16.4.2009, 21:03 | ||||
С тем, что идет в строку запроса MySQL, надо делать так:
Или использовать mysqli:
|
| Автор: hripun 17.4.2009, 10:44 |
| Всё, общими усилиями теперь все работает ))) еще один воарос ) как сделать что бы нельзя было зайти на страницу незарегистрированному пользователю? |
| Автор: Shark 17.4.2009, 10:51 | ||
| hripun, одна тема - один вопрос! прочитай правила.. но тут я теб напишу. если пользователь зареген, но не авторизован можно написать так:
это просто как пример. чтоб пользователь мог авторизоваться, пишешь форму с 2-мя полями Логин и Пароль... далее по БД сравниваешь введнные данные и если все верно создаешь сессию $_SESSION['login']... и все. |