???
Математика на уровне МГУ

Показано с 1 по 25 из 54

Тема: PHP-вопрос

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Инспектор
    Регистрация
    12.08.2008
    Адрес
    Новосибирск
    Сообщений
    5,345

    Ответ: PHP-вопрос

    Цитата Сообщение от CoValent Посмотреть сообщение
    О, это решение заработало! Спасибо, Андрей!
    А ещё лучше
    Код:
    <?php
    if (isset($_GET['id'])) {
    include ($_GET['id'].".htm");
    } else {
    include ("1.htm");
    }
    ?>

  2. #2
    Добрый хозяин Аватар для CoValent
    Регистрация
    01.11.1997
    Адрес
    Москва, Россия
    Возраст
    57
    Сообщений
    19,336
    Images
    34

    Ответ: PHP-вопрос

    Цитата Сообщение от Mirnyi Посмотреть сообщение
    А ещё лучше...
    Спасибо, Андрей: тоже работает!

    P.S. Блин, как грустно быть ламером в этом лучшем из миров - как работает эта конструкция я уже не понимаю...
    Валентин "CoValent" Логинов

    Errare humanum est, ignoscere divinum (с) Marcus Tullius Cicero



    Правила тут, термины тут, модераторы тут.

  3. #3
    Инспектор
    Регистрация
    12.08.2008
    Адрес
    Новосибирск
    Сообщений
    5,345

    Ответ: PHP-вопрос

    Цитата Сообщение от CoValent Посмотреть сообщение
    Спасибо, Андрей: тоже работает!

    P.S. Блин, как грустно быть ламером в этом лучшем из миров - как работает эта конструкция я уже не понимаю...
    isset($_GET('id')) выдаёт истину, если в запросе есть id=чему-то там.
    А вообще, с точки зрения безопасности
    include с непроверенной переменной из запроса - жуткая дыра.
    Через id можно заинклюдить что хочешь.

    Количество допустимых id должно быть ограничено и через if проверять и направлять на конкретную страницу
    Код:
    <?php
    if (!isset($_GET['id'])) {
    include ("1.htm");
    } else {
    if($_GET['id']=1){
    include("1.htm");
    }
    if($_GET['id']=2){
    include("2.htm");
    }
    ........
    }
    ?>
    Или хотябы проверять, что $_GET['id'] цифра, а не что-нибудь вроде "http://lomaster.com/crack"
    Некрасиво, длинно, но смысл есть.
    Крайний раз редактировалось Mirnyi; 19.03.2010 в 17:53.

  4. #4
    Мастер Аватар для DogEater
    Регистрация
    03.11.2001
    Адрес
    Подмосковье
    Возраст
    52
    Сообщений
    4,442

    Ответ: PHP-вопрос

    А можно я тоже кааапельку повыпендриваюсь?
    Код:
    if (isset ($_GET['id']) and preg_match ("/^\d$/",$_GET['id'])){
       include($_GET['id'].".htm");
    }
    else {
       include("1.htm");
    }
    "Прежде чем открыть огонь - оглянись!"
    А.В. Ворожейкин "Сильнее смерти", стр 9.
    "<...>не нужны маркеры противника парням в военном небе Великой Отечественной.
    Послюнявили химический карандаш. Пунктиром отметили маршрут на карте. И вперёд!"
    © DEDA
    1680 x 1050 && i7 2600 (3.4Ghz) && 8 gb DDR3 (1600 Mhz) && gtx 580 && win 7 x64

  5. #5
    Инспектор
    Регистрация
    12.08.2008
    Адрес
    Новосибирск
    Сообщений
    5,345

    Ответ: PHP-вопрос

    Цитата Сообщение от DogEater Посмотреть сообщение
    А можно я тоже кааапельку повыпендриваюсь?
    Код:
    if (isset ($_GET['id']) and preg_match ("/^\d$/",$_GET['id'])){
       include($_GET['id'].".htm");
    }
    else {
       include("1.htm");
    }

    Я-то по-ламерски. Регулярники для меня - тёмный лес
    Значение набора символов /^\d$/ у меня в голове не помещается

  6. #6
    Мастер Аватар для DogEater
    Регистрация
    03.11.2001
    Адрес
    Подмосковье
    Возраст
    52
    Сообщений
    4,442

    Ответ: PHP-вопрос

    Цитата Сообщение от Mirnyi Посмотреть сообщение

    Я-то по-ламерски. Регулярники для меня - тёмный лес
    Значение набора символов /^\d$/ у меня в голове не помещается
    Сразу после начала строки идёт одна цифра, далее следует конец строки.
    Это гарантированная проверка на то, что в переменной только один символ и это есть цифра. После чего уже можно спокойно инклюдить.
    "Прежде чем открыть огонь - оглянись!"
    А.В. Ворожейкин "Сильнее смерти", стр 9.
    "<...>не нужны маркеры противника парням в военном небе Великой Отечественной.
    Послюнявили химический карандаш. Пунктиром отметили маршрут на карте. И вперёд!"
    © DEDA
    1680 x 1050 && i7 2600 (3.4Ghz) && 8 gb DDR3 (1600 Mhz) && gtx 580 && win 7 x64

  7. #7
    Инспектор
    Регистрация
    12.08.2008
    Адрес
    Новосибирск
    Сообщений
    5,345

    Ответ: PHP-вопрос

    Цитата Сообщение от DogEater Посмотреть сообщение
    Это гарантированная проверка на то, что в переменной только один символ и это есть цифра.

    отвалбашки

  8. #8
    Мастер Аватар для DogEater
    Регистрация
    03.11.2001
    Адрес
    Подмосковье
    Возраст
    52
    Сообщений
    4,442

    Ответ: PHP-вопрос

    Цитата Сообщение от Mirnyi Посмотреть сообщение

    отвалбашки
    отвал говоришь?
    А если нужны цифры только от 3 до 5 и во входящих данных - мусор?
    Код:
    if (preg_match ("/^[\D]*/([3-5]{1}).*$/",$_GET['id'],$id) ){
       include($id[1].".htm");
    }
    else {
       include("1.htm");
    }


    ---------- Добавлено в 19:24 ---------- Предыдущее сообщение было написано в 19:21 ----------

    Цитата Сообщение от harinalex Посмотреть сообщение
    тогда уж надо предусмотреть и 99.htm (вряд ли там так мало файлов ) . имхо , лучше просто /[0-9]/
    скорее всего 0.htm вряд ли стоит учитывать.
    Код:
    if (preg_match ("/^[\D]*/([1-9][0-9]?).*$/",$_GET['id'],$id) ){
       include($id[1].".htm");
    }
    else {
       include("1.htm");
    }
    "Прежде чем открыть огонь - оглянись!"
    А.В. Ворожейкин "Сильнее смерти", стр 9.
    "<...>не нужны маркеры противника парням в военном небе Великой Отечественной.
    Послюнявили химический карандаш. Пунктиром отметили маршрут на карте. И вперёд!"
    © DEDA
    1680 x 1050 && i7 2600 (3.4Ghz) && 8 gb DDR3 (1600 Mhz) && gtx 580 && win 7 x64

  9. #9
    Инспектор
    Регистрация
    12.08.2008
    Адрес
    Новосибирск
    Сообщений
    5,345

    Ответ: PHP-вопрос

    Цитата Сообщение от DogEater Посмотреть сообщение
    отвал говоришь?
    А если нужны цифры только от 3 до 5 и во входящих данных - мусор?
    Да нет, я же не против
    Даже наоборот - за.

  10. #10
    Старший инструктор Аватар для harinalex
    Регистрация
    22.12.2007
    Адрес
    UUEE
    Возраст
    60
    Сообщений
    4,236

    Ответ: PHP-вопрос

    Цитата Сообщение от DogEater Посмотреть сообщение
    скорее всего 0.htm вряд ли стоит учитывать.
    Код:
    if (preg_match ("/^[\D]*/([1-9][0-9]?).*$/",$_GET['id'],$id) ){
       include($id[1].".htm");
    }
    else {
       include("1.htm");
    }
    в 0.htm можно какую-нибудь обидную фразу написАть

    главное , что инъекцию не даст сделать - и ладно .

  11. #11
    Старший инструктор Аватар для harinalex
    Регистрация
    22.12.2007
    Адрес
    UUEE
    Возраст
    60
    Сообщений
    4,236

    Ответ: PHP-вопрос

    Цитата Сообщение от DogEater Посмотреть сообщение
    Сразу после начала строки идёт одна цифра, далее следует конец строки.
    Это гарантированная проверка на то, что в переменной только один символ и это есть цифра. После чего уже можно спокойно инклюдить.
    тогда уж надо предусмотреть и 99.htm (вряд ли там так мало файлов ) . имхо , лучше просто /[0-9]/ или /^[\d]+/
    Крайний раз редактировалось harinalex; 19.03.2010 в 19:25.

  12. #12
    Инспектор
    Регистрация
    12.08.2008
    Адрес
    Новосибирск
    Сообщений
    5,345

    Ответ: PHP-вопрос

    Цитата Сообщение от harinalex Посмотреть сообщение
    тогда уж надо предусмотреть и 99.htm (вряд ли там так мало файлов ) . имхо , лучше просто /[0-9]/
    И тогда функция вернёт истину на любой набор символов хоть с одной цифрой (если я не ошибаюсь)
    Вот за то и не люблю регулярные, что можно написать такого, что сам потом не разберёшь.
    Но, конечно, это только отмазка, чтобы мозг не ломать "китайской грамотой".
    Если знать их хорошо и функции которые с ними работают, то инструмент мощнейший.

  13. #13
    Старший инструктор Аватар для harinalex
    Регистрация
    22.12.2007
    Адрес
    UUEE
    Возраст
    60
    Сообщений
    4,236

    Ответ: PHP-вопрос

    Цитата Сообщение от Mirnyi Посмотреть сообщение
    И тогда функция вернёт истину на любой набор символов хоть с одной цифрой (если я не ошибаюсь)
    Вот за то и не люблю регулярные, что можно написать такого, что сам потом не разберёшь.
    Но, конечно, это только отмазка, чтобы мозг не ломать "китайской грамотой".
    Если знать их хорошо и функции которые с ними работают, то инструмент мощнейший.
    нет , только этот диапазон цифр

  14. #14
    Мастер Аватар для DogEater
    Регистрация
    03.11.2001
    Адрес
    Подмосковье
    Возраст
    52
    Сообщений
    4,442

    Ответ: PHP-вопрос

    Цитата Сообщение от Mirnyi Посмотреть сообщение
    И тогда функция вернёт истину на любой набор символов хоть с одной цифрой (если я не ошибаюсь)
    Вот за то и не люблю регулярные, что можно написать такого, что сам потом не разберёшь.
    Но, конечно, это только отмазка, чтобы мозг не ломать "китайской грамотой".
    Если знать их хорошо и функции которые с ними работают, то инструмент мощнейший.
    Не пожидись, купи себе немножечко Джеффри Фридла, "Регулярные выражения". Я купил второе издание в 2003 за 256 рублей, и до сих пор не жалею.
    Даже если ты осилишь первые 3 главы - это сильно поднимет твой уровень.
    "Прежде чем открыть огонь - оглянись!"
    А.В. Ворожейкин "Сильнее смерти", стр 9.
    "<...>не нужны маркеры противника парням в военном небе Великой Отечественной.
    Послюнявили химический карандаш. Пунктиром отметили маршрут на карте. И вперёд!"
    © DEDA
    1680 x 1050 && i7 2600 (3.4Ghz) && 8 gb DDR3 (1600 Mhz) && gtx 580 && win 7 x64

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •