Выбирай любой вариант или все сразу )
1. Поставь денвер, в нем из коробки все работает, не будешь мучиться
2. Можешь редирект прям в пхп сделать с помощью функции header
3. Регулярку неверно указал, укажи так
RewriteRule index.php$ / [QSA,R]
1. Та хотелось бы без Денвера, чтобы понимать как это работает)
2. Да, это было бы самое простое решение, но хочу в целом разобраться с этим файлом и его возможностями и просто начал с самого простого, но сразу столкнулся с проблемой.
3. К сожалению, не работает. У меня не происходит ничего, чтобы я ни писал в htaccess, проблема в том, что он просто игнорируется. (Добавление)
sympler пишет:
Выбирай любой вариант или все сразу )
1. Поставь денвер, в нем из коробки все работает, не будешь мучиться
2. Можешь редирект прям в пхп сделать с помощью функции header
3. Регулярку неверно указал, укажи так
RewriteRule index.php$ / [QSA,R]
Все, получилось сделать так, чтобы сервер видел .htaccess, не до конца оказывается дописал настройки в httpd.conf, описание для таких же, как я, в описании добавлено.
Но теперь проблема с тем, чтобы перенаправиться из localhost/folder/index.php в localhost/folder. Если пишу как в описании, или как вы написали, то меня перекидывает в браузере в каталог localhost, а если написать вот так:
Добрый день!
У меня не работает .htaccess на localhost.
Хочу сделать банальный редирект, чтобы убрать из адресной строки index.php.
Для этого в httpd.conf поменял AllowOverride none на AllowOverride All и раскомментировал строку LoadModule rewrite_module modules/mod_rewrite.so.
В phpinfo() указано Loaded Modules: mod_rewrite, т.е. должно быть все нормально.
В папке рядом с файлом index.php создал файл .htaccess и в нем написал следующее:
Но когда пишу localhost/folder/index.php, то появляется главная страница, но и адресная строка остается такой же, т.е. не происходит редиректа на localhost/folder/
Как это исправить, чтобы .htaccess работал?
Спасибо!
Решение, чтобы сервер понимал htaccess!
В httpd.conf вместо
Добрый день! Не получается сделать валидацию простой формы в CodeIgniter (пока без Модели и БД, хотя бы с проверкой разобраться).
ПЕРВЫЙ ВИД (файл success_form_view.php):
После клика на кнопку никакой проверки не происходит, в случае верного заполнения мне не выводистя надпись "Статья успешно добавлена", а возвращается все та же пустая форма, проверял $check функцией gettype, она boolean и там все время false.
Что я написал неправильно?
Спасибо!
Спасибо большое за пример, но дело в том, что у меня там немного не так устроено. Пользователь в файле 1.php при помощи сортируемого списка расставляет ранги, кликает на кнопку, в файле 1.js я это по событию клика через аякс передаю в файл 2.php и делаю туда редирект. в этом файле получаю массив из списка, который сделал пользователь, вношу его в одну таблицу, а в другую как раз пытаюсь внести его id, которая означает, что он проголосовал.
И код все равно не хочет доходить до 19 строчки по вашему примеру, он после 14 сразу прыгает на 6 и все заново.
Yan9
1. Не стоит вывод сообщения выполнять в теле функции.
2. Можно в записи выделить поле для подсчета количества голосов. 0 - только что вставленный, 1 - проголосовавший 1 раз и т.д. И проверять уже его, а не только наличие строчки в таблице.
3. Можно после вставки выполнять редирект на страницу отображения результата.
1. Не понял что вы имеете ввиду.
2. Как это правильно реализовать? Я не знаю кто будет голосовать, если пользователь нажимает кнопку "голосовать", то я же уже должен проверить наличие 0 или 1 по его id, а когда вставлять этот 0?
3. header("Location:".$_SERVER['HTTP_REFERER']); не помогло, все равно выводится надпись "Вы не можете проголосовать больше 1 раза", т.е. код даже не дошел до этой строки, а сразу после INSERT'a перескочил вверх и пошел исполняться снова, пока не увидел в БД уже созданную только что строку.
Чтобы было более правильно, разбил это все на 2 метода, конструкцию if вынес из класса, но результат все равно тот же.
Файл с объектами:
Там, где я вывожу количество строк (echo $count), то пишет 1 вместо 0, т.е. вывод отсутствия строк просто игнорируется, это для меня вообще загадка, ведь это уже происходит вне класса в другом файле, а работает точно так же. Потом исполняется конструкция if, потом метод с запросом insert и код перескакивает вверх, начиная все сначала.
Притом, что циклов никаких нет, создал специально два разных объекта для вызова двух методов, а результат не меняется.
Добрый день!
Делаю голосование на сайте. Для этого id проголосовавшего вношу в таблицу и проверяю есть ли оно там или нет, для того, чтобы разрешить голосование или нет.
Делаю в ООП. Вот код:
Создаю объект и вызываю метод:
Проблема в том, что если в таблице "quantity" НЕТ записи с этим пользователем, то она создается, что и должно быть, но на экран выводится тут же сообщение 'Вы не можете проголосовать больше 1 раза', т.е. каким-то образом код не доходит до echo 'Ok', а снова начинается сверху, соответственно уже находит эту строку и выводит эту надпись.
Если же удалить INSERT запрос, а оставить только echo 'Ok', то при отсутствии записи, на экран выводится надпись 'Ok', что и должно быть.
Циклов никаких тут не использую, этот метод больше нигде не вызываю, объекта такого больше нигде нет. Я просидел с этим уже часов 5, помочь никто не может.
Код элементарный, но не работает как надо. Буду очень благодарен за помощь!
php.exe и последний слеш не нужны. Посмотрите, как там другие пути обозначены. В них нет имен файлов
Спасибо большое, стала доступна версия php, но при установке все равно возникает та же ошибка:
"The openssl extension is missing, which means that secure HTTPS transfers are impossible.
If possible you should enable it or recompile php with --with-openssl"
Вот скриншот при установке через командную строку.
Есть ли какой-то выход?
нужно путь к php.exe добавить в переменную PATH (речь о windows ведь?)
Как? Правый клик по "Этот компьютер" -> Свойства компьютера -> Дополнительные параметры системы -> Переменные среды -> Системные переменные -> Двойной клик по Path -> Добавление пути через точку-с-запятой -> OK -> OK -> OK
После этих манипуляций проверьте правильность
Win + R -> в окошке ввести "cmd" -> OK
Откроется терминал. Вводим команду "php -v", жмем ENTER. D терминале должна отобразиться версия установленного php. Если так и есть, значит php доступен, и инсталлер композера отработает нормально. (Добавление)
Есть более простой путь - скачать OpenServer. В нем композер уже предустановлен
Спасибо, что так подробно все описали, сделал как вы сказали, но, к сожалению, так и не работает.
Буду качать open server)
Чем не устроил Windows Installer ?
https://getcomposer.org/download/
Уже пробовал, не получается, пишет, что команда "curl", либо "php" не является внутренней или внешней командой.
Вот так тоже не работает:
cd \ bin
php -r "readfile('https://getcomposer.org/installer');"