Как передать данные (post\get)
//--index.htm--//
<form method="post" action="do.php">
<input type="text" name="password">
<input type="submit" name="enter" value="enter"></td></tr>
</form>
//--do.php--//
<?php if ($enter) { echo $password; } ?>
Наверное, любые данные просто не передаются post-ом (и get-ом тоже (проверял)) между страничками.
Что делать?
Q: Не видно параметров передаваемых скрипту.
Q: Переменная $page пустая, хотя я передаю do.php?page=2
Q: Что делать, если хостер выключил register_globals
Использование Register Globals
Возможно, самое заметное изменение в PHP, это то что, изминилось значение по умолчанию для директивы
register_globals. С версии 4.2.0 ее значение OFF.
Зачем это сделано может продемонстировать простой пример:
Код:
<?php
if (authenticated_user()) {
$authorized = true;
}
if ($authorized) {
include "/highly/sensitive/data.php";
}
?>
if (authenticated_user()) {
$authorized = true;
}
if ($authorized) {
include "/highly/sensitive/data.php";
}
?>
Если register_globals=on, то переменной $authorized может стать TRUE, даже не если функция
authenticated_user() вернет FALSE.
Теперь рассмотрим методы борьбы:
1. Использование предустановленных массивов:
- $HTTP_GET_VARS - переменные переданные методом GET
- $HTTP_POST_VARS - переменные переданные методом POST
- $HTTP_COOKIE_VARS - значения Cookie
- $HTTP_SESSION_VARS - переменные сессий
Помните, что если вы используете предустановленные массивы не видны внутри функции, по этому необходимо дейтсвовать
следущим образом:
Код:
function myfunction() {
GLOBAL $HTTP_POST_VARS;
print $HTTP_POST_VARS["page"];
}
GLOBAL $HTTP_POST_VARS;
print $HTTP_POST_VARS["page"];
}
2. Использование суперглобальных массивов
$_GET - переменные переданные методом GET
$_POST - переменные переданные методом POST
$_COOKIE - значения Cookie
$_SESSION - переменные сессий
Суперглобальные массивы не имеют недостатка описанного выше:
Код:
function myfunction() {
print $_POST["page"];
}
print $_POST["page"];
}
[phpdoc]language.variables.predefined[/phpdoc]
3. Использование функции [phpdoc]import_request_variables[/phpdoc]()
Функция позволяет импортировать GET/POST/Cookie переменные.
Синтаксис:
bool import_request_variables ( string типы [, string префикс])
Типы могут быть:
- G - GET
- P - POST
- C - Cookies
При указании типов регистр не имеет значения. Вы можете передавать сразу несколько типов, но при этом переменные будут перекрываться.
Пример импортирующий GET, а поверх них POST переменные:
Код:
import_request_variables("gP", "rvar_");
echo $rvar_foo;
echo $rvar_foo;
См. еще [phpdoc]extract[/phpdoc]
По развернутости ответа и оформлению ясно видно что выдранно из мана :)
Может пора зделать ссылки на маны из каждого форума?
Ну или создать топики, приклеить и написать жуткими буквами
"ЧАЙНИК! ЗДЕСЬ ЛЕЖАТ ОТВЕТЫ НА ВСЕ ТВОИ ВОПРОСЫ!!!" ну или что то вроде этого...
и на ман проще посылать будет да и может однообразных вопросов будет поменьше. За эту неделю я уже было вроде 3 вопроса про register_globals а неделя только началась :)
Предлагайте ваши вопросы, которые стоит занести в FAQ.