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

Страница 1 из 3 123 КрайняяКрайняя
Показано с 1 по 25 из 54

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

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

    PHP-вопрос

    В сайте использован вызов содержимого по линку типа "index.php?id=2":
    Код:
    <?php
    if ($id=="") {
    include ("1.htm");
    } else {
    include ("$id.htm");
    }
    ?>
    Однако, по любому линку вызывается лишь содержимое "1.htm" - но не "2.htm", как в примере вызова наверху.

    Подскажите, пожалуйста, где собака порылась? А то мозги уже перегрелись...

    Спасибо!
    Валентин "CoValent" Логинов

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



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

  2. #2
    Пилот Аватар для ilya_rad
    Регистрация
    12.09.2005
    Адрес
    РБ, г. Бобруйск
    Возраст
    49
    Сообщений
    2,896

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

    надо так писать:
    include ($id.".htm");

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

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

    Увы, Илья, не работает.
    Валентин "CoValent" Логинов

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



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

  4. #4
    Пилот Аватар для ilya_rad
    Регистрация
    12.09.2005
    Адрес
    РБ, г. Бобруйск
    Возраст
    49
    Сообщений
    2,896

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

    щас.. минутку..
    Проверю сам

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

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

    Уточнение: кручу локально в денвере. Хотя, думаю, не в этом дело...

    Кстати, точка, выделенная красным ($id.".htm") - точно нужна?
    Валентин "CoValent" Логинов

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



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

  6. #6
    Пилот Аватар для ilya_rad
    Регистрация
    12.09.2005
    Адрес
    РБ, г. Бобруйск
    Возраст
    49
    Сообщений
    2,896

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

    Код:
     if (!@$id) 
      {include ("1.htm");
      } 
     else 
      {include ("$id".".htm");
      }
    вот так у меня заработало

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

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

    Увы, у меня содержимое "2.htm" так и не вызывается...
    Валентин "CoValent" Логинов

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



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

  8. #8
    Пилот Аватар для ilya_rad
    Регистрация
    12.09.2005
    Адрес
    РБ, г. Бобруйск
    Возраст
    49
    Сообщений
    2,896

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

    ну вот я залил на хост, работает:
    http://berossi.by/i.php

    там лежит три файла 1.htm, 2.htm, 3.htm

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

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

    Цитата Сообщение от ilya_rad Посмотреть сообщение
    ну вот я залил на хост, работает:
    http://berossi.by/i.php

    там лежит три файла 1.htm, 2.htm, 3.htm
    Можешь их в аттач сюда засунуть?
    Валентин "CoValent" Логинов

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



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

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

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

    Цитата Сообщение от CoValent Посмотреть сообщение
    Увы, у меня содержимое "2.htm" так и не вызывается...
    Посмотреть настройки PHP, попробовать через $_GET
    Код:
    <?php
    if ($_GET['id']=="") {
    include ("1.htm");
    } else {
    include ("$_GET['id']".".htm");
    }
    ?>
    Крайний раз редактировалось Mirnyi; 19.03.2010 в 17:01.

  11. #11
    Пилот Аватар для ilya_rad
    Регистрация
    12.09.2005
    Адрес
    РБ, г. Бобруйск
    Возраст
    49
    Сообщений
    2,896

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

    Да, засовываю все файлы
    Вложения Вложения
    • Тип файла: rar 1.rar (488 байт, Просмотров: 29)

  12. #12
    Пилот Аватар для ilya_rad
    Регистрация
    12.09.2005
    Адрес
    РБ, г. Бобруйск
    Возраст
    49
    Сообщений
    2,896

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

    А, да, php.ini посмотри на предмет
    register_globals = On

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

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

    Цитата Сообщение от Mirnyi Посмотреть сообщение
    Посмотреть настройки PHP, попробовать через $_GET
    Андрей... я в этом дуб дубом. Можешь пошагово?
    Валентин "CoValent" Логинов

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



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

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

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

    У меня локально не срабатывает.
    Цитата Сообщение от ilya_rad Посмотреть сообщение
    А, да, php.ini посмотри на предмет
    register_globals = On
    Пошёл искать...
    Валентин "CoValent" Логинов

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



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

  15. #15
    Пилот Аватар для ilya_rad
    Регистрация
    12.09.2005
    Адрес
    РБ, г. Бобруйск
    Возраст
    49
    Сообщений
    2,896

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

    если лень искать, то можно через GET.
    дописать самой первой строкой $id=$_GET["id"];

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

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

    Ура, заработало! Спасибо, Илья: нашёл в php.ini строчку и исправил!
    Валентин "CoValent" Логинов

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



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

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

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

    Цитата Сообщение от Mirnyi Посмотреть сообщение
    Посмотреть настройки PHP, попробовать через $_GET
    Код:
    <?php
    if ($_GET['id']=="") {
    include ("1.htm");
    } else {
    include ("$_GET['id']".".htm");
    }
    ?>
    Вот так
    а разрешать регистрировать глобалы уже считается моветоном, хотя многие старые скрипты без этого не работают

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

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

    Цитата Сообщение от Mirnyi Посмотреть сообщение
    Вот так
    а разрешать регистрировать глобалы уже считается моветоном, хотя многие старые скрипты без этого не работают
    А вот этот вариант не работает, ругается на строчку
    Код:
    include ("$_GET['id']".".htm");
    через
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in Z:\home\mysite\www\index.php on line 7
    Потому что глобальную исправили?
    Валентин "CoValent" Логинов

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



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

  19. #19
    Пилот Аватар для ilya_rad
    Регистрация
    12.09.2005
    Адрес
    РБ, г. Бобруйск
    Возраст
    49
    Сообщений
    2,896

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

    Цитата Сообщение от Mirnyi Посмотреть сообщение
    Вот так
    а разрешать регистрировать глобалы уже считается моветоном, хотя многие старые скрипты без этого не работают

    Ну, на всех хостах, с которыми я работал, разрешены глобалы.
    Хотя с точки зрения безопасности их лучше запретить

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

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

    Цитата Сообщение от CoValent Посмотреть сообщение
    А вот этот вариант не работает, ругается на строчку
    Код:
    include ("$_GET['id']".".htm");
    через

    Потому что глобальную исправили?
    Нет. Тут действительно где-то в синтаксисе косяк
    Что-то с кавычками.
    Попробуй так
    Код:
    include ($_GET['id'].".htm");

  21. #21
    Пилот Аватар для ilya_rad
    Регистрация
    12.09.2005
    Адрес
    РБ, г. Бобруйск
    Возраст
    49
    Сообщений
    2,896

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

    Цитата Сообщение от CoValent Посмотреть сообщение
    А вот этот вариант не работает, ругается на строчку
    Код:
    include ("$_GET['id']".".htm");
    через

    Потому что глобальную исправили?
    Нет, то, что глобалы разрешены - на работу $_GET отражаться не должно.
    Скорее всего, ошибка происходит, когда вызываешь файл без параметра id, типа http://localhost/index.php
    А http://localhost/index.php?id=1 должно работать нормально

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

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

    Цитата Сообщение от Mirnyi Посмотреть сообщение
    ...Попробуй так...
    О, это решение заработало! Спасибо, Андрей!
    Валентин "CoValent" Логинов

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



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

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

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

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

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

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

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

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

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



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

  25. #25
    Инспектор
    Регистрация
    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.

Страница 1 из 3 123 КрайняяКрайняя

Ваши права

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