Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2015
Помог: 0 раз(а)
есть скрипт, который работал на 4.х и после перехода на 5.2 работать перестал начисто, не передает и невидит параметры из командной строки. ничего не пойму, начал с начала - на этом сайте есть урок:
наиболее простой способ передачи имени сценарию — непосредственный набор его в URL после знака ? — например, в формате name=имя
Делаю:
s1.php?name=имя
Пишу скрипт, принимающий параметр name и выводящий результат в браузер пользователя, а затем сохраняю его под именем s1.php:
<?php
echo "Привет, $_GET['name'] !";
?>
В результате ощибка
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /.../s1.php on line 2
Что в примере неправильно? или как 5.2 настроить, чтоб работал хотя бы этот пример?
параметр потерялся, но почему, помогите кто знает.
DeepVarvar
Отправлено: 17 Апреля, 2015 - 15:37:17
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2015
Помог: 0 раз(а)
[quote=DeepVarvar][/quote]
почему это поможет? (Добавление)
уроки типа http://www.php.su/learnphp/vars/?external - это для какой версии? поменяю версию и другой скрипт начнет глюкать.
Я перерыл кучу текстов с описанием различий версий, запутался полностью.
Может есть где-нибудь простая срвнительная таблица, в чем отличме версий по обработке переменных команднеой строки и при передаче из формы?
esterio
Отправлено: 17 Апреля, 2015 - 16:53:42
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2015
Помог: 0 раз(а)
[quote=DeepVarvar][/quote]
Если шутка, то веселее не стало. Ошибка исчезла, параметры не передаются.
в. 5.5.11
запрос http://s1.php?name=gggggppppp
выдает
Привет, !
ПАРАМЕТРА не видит name (Добавление)
esterio пишет:
есть http://php.net/manual/ru/appendices.php
Спасибо, там везде написано, что можно передавать в ком строке параметры типа в этом примере. Нет в новых версий запретов на ето. Вот только скрипт не видит этих данных.
Из-за чего таое може быть? (Добавление)
DeepVarvar пишет:
Поставить 5.5
поставил 5.5.11
ошибочки появились
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/../config.php on line 9
Fatal error: Call to undefined function session_register() in /home/../config.php on line 74
Warning: Unknown: 1 result set(s) not freed. Use mysql_free_result to free result sets which were requested using mysql_query() in Unknown on line 0
Можно этому горю помочь?
exlant
Отправлено: 17 Апреля, 2015 - 23:13:37
Посетитель
Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015
Помог: 14 раз(а)
Deprecated: mysql_connect(): - изучать другое API, например MySqli или PDO, MYSQL устарело, и будет удаленно в следующей версии php!
Fatal error: Call to undefined function session_register() - Данная функция была помечена УСТАРЕВШЕЙ начиная с версии PHP 5.3.0 и была УДАЛЕНА в версии PHP 5.4.0.
а вообще вообще самый лучший вариант - это научиться использовать гугл, все эти ошибки элементарно гуглятся, и ответ можно найти в первых двух-трех ссылках!
respect_all
Отправлено: 19 Апреля, 2015 - 18:35:38
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2015
Помог: 0 раз(а)
kid26 пишет:
есть скрипт, который работал на 4.х и после перехода на 5.2 работать перестал начисто, не передает и невидит параметры из командной строки. ничего не пойму, начал с начала - на этом сайте есть урок:
наиболее простой способ передачи имени сценарию — непосредственный набор его в URL после знака ? — например, в формате name=имя
Делаю:
s1.php?name=имя
Пишу скрипт, принимающий параметр name и выводящий результат в браузер пользователя, а затем сохраняю его под именем s1.php:
<?php
echo "Привет, $_GET['name'] !";
?>
В результате ощибка
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /.../s1.php on line 2
Что в примере неправильно? или как 5.2 настроить, чтоб работал хотя бы этот пример?
параметр потерялся, но почему, помогите кто знает.
Конкатенация в помощь echo 'Привет, '. $_GET['name'];
kid26
Отправлено: 20 Апреля, 2015 - 16:11:46
Новичок
Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2015
Помог: 0 раз(а)
respect_all пишет:
научиться использовать гугл
Так месяц уже гуглю, нигде нет ответа решающего мою проблему. Пример из учебника не работает даже с конкатенацией, просто непонятно было зачем такое пишут.
Вот живая проблема, которую и пытаюсь решить:
в файле index.php есть ссылка
<a href="index.php?side=option">Настройки</a>
<a href="index.php?side=profiles">Профили</a>
Дальше в этом же файле
if((!@$side) or (@$side == 'motels')) {
...111
}
if(@$side == 'option') {...
...222
}
if(@$side == 'profiles') {
<h3>Редактирование профилей</h3><br>
...333
}
При нажатии на ссылки они же и перерисовываются и выполняется первый иф 111
Надеюсь понятно в чем проблема, текст сокращаю лишний.
Это все работало в 4.х, попадало соответственно в 222 или 333, в 5х не работает.
exlant, помоглите это траблу погуглить. И вы так радостно говорите об изменениях в новых версиях что мне это подход ММ напоминает, когда новые версии отрицают старые наработки. Ничего хорошего в этом нет, по-моему. Не все же хацкеры крутые, хочется просто юзать скрипты, хоть они и старые.
exlant
Отправлено: 20 Апреля, 2015 - 17:26:48
Посетитель
Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015
Помог: 14 раз(а)
Совет! Не читайте старые книги по языкам программирования! Если книге 2-3 года ее, можно считать уже устаревшей! А пятая версия PHP была выпущена разработчиками еще в 2004 году! Я так понимаю вашим книгам, больше 10 лет, это ппц как много для такой отрасли, как программирование и для компьютеров в общем! 10 лет назад люди еще во всю тормознутым dial-up пользовались! И венчестеры были по 40-60Гб, да и ОС другие были... Ничто не стоит на месте все развивается а в компьютерной отрасли десятимильными шагами!
По вашему вопросу все делается очень просто.. Есть суперглобальный массив _GET, вот его и используйте!
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Да, PHP 5.0.0 был выпущен 13 июля 2004 года. Соответствующая Beta 1 ещё годом раньше, 29 июня 2003.
А в чём проблема?
kid26 пишет:
новые версии отрицают старые наработки. Ничего хорошего в этом нет, по-моему.
Да, ничего хорошего для древнего кода.
А всё хорошее за такое решение долго и пристально обсуждается, если перевешивает доводы против - то принимается. Если не перевешивает по результатам голосования, то отклоняется. И этот груз обратной совместимости весьма мешает совершенствовать язык. Потому расширение mysql_* уже 10 лет как устарело, но его всё ещё держат и только в этом году от него избавятся в релизе PHP7. А register_globals, на который рассчитан ваш код - дурацкая и спорная идея и на момент принятия, к счастью, в релизе 5.3 отключили.
----- PostgreSQL DBA
kid26
Отправлено: 20 Апреля, 2015 - 18:45:43
Новичок
Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2015
Помог: 0 раз(а)
exlant пишет:
Совет! Не читайте старые книги по языкам программирования!
Спасибо, поробую. А старые книги не читаю, пример с этого же сайта, где етот форум стоит. и гугл его прекрасно выдает, в самом верху... вот и читаю. Админам етого сайта нужно в статье любой прямо указывать, для какой версии она дествительна. Или удалять контент, как старые функции разработчики.
kid26
Отправлено: 21 Апреля, 2015 - 12:42:06
Новичок
Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2015
Помог: 0 раз(а)
Мелкий пишет:
ничего хорошего для древнего кода.
Вы правы, но если кто помнит этот код, то еще вопрос по нему
В том же коде есть еще ссылка
<a href="index.php?action=exit">Выход</a>
и такой текст:
// Выход из панели управления
if (@$action == 'exit') {
// Стираем сессию с паролем
session_unset();
Header("Location: index.php");
exit;
}
код его прекрасно ловит и выходит. В этом-то случае почему срабатывает, ведь тоже без всякого _GETмассива передается. Непонятно.
Мелкий
Отправлено: 21 Апреля, 2015 - 13:10:39
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Значит переменная $action была уже определена ранее. Что характерно, не обязательно в значение 'exit'.
Значения true и 0 тоже приведут к выполнению этого условия.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.