title
Description
Body
хотелось бы поговорить и узнать больше инфы о глобальных переменных и register globals)
вобщем то я знаю что register globals(если ON) то это большая дыра в безопасноти,
что переменные вида $_GET['opa'] или $_SERVER['QUERY_STRING'] при включенном register globals, будут иметь вид $opa и $QUERY_STRING
Вообщем то это всё..
Неактивен
Ну регистер глобал снетакая уж дыра если прогер не криворукий, но за его использование руки отрывать надо. А про глобальные переменные, то phpinfo(); напиши. Там все $_СЕРВЕР переменные будут
Мастера объясните для чего нужны эти глобальные переменные и что они дают ? И вообщечто это такое ? У меня не работал скрипт форума на беспл.хосте(НЕВОЗМОЖНО БЫЛО СОЗДАТЬ ТЕМУ) http://wapf.ru и на форуме вен.ру кто-то посоветовал мне включить эти глобальные переменные прописав в .htaccess следующую строку
|
|
и о чудо,всё заработало!Второй случай уже был на платном хосте.Я установил скрипт сервиса чатов и он тоже не хотел работать(НЕВОЗМОЖНО БЫЛО ЗАРЕГАТЬ ЧАТ).Тогда я вспомнив,что мне посоветовали на форуме вен.ру год назад включил в .htaccess эту строку и всё заработало. Обьясните какую функцию на сервере или в скрипте эта строка включила.
Неактивен
Вообще по этим глобальным переменным можно судить о качестве скрипта, если он работает только на включенных, то можно судить о его низком качестве.
Если глобальные переменные включены, то все что введет пользователь, становится одноименными переменными в скрипте. Т.е. если у нас $_SESSION['id'] = 1;, то при включенных глобальных переменных, если пользователь введет http://link.ru/?id=2, $_SESSION['id'] станет равна 2. И вообще так можно подменить любую явно не обьявленную переменную.
Неактивен
вот много читал про регистр глобалс но так до конца и не понял когда он а когда оф. Понял то что при он данные передаются в ссылке а при оф нет.
Вот я на данный момент понял так:
<input type=text name=login value="name">
Если регистр глобалс он то когда данные идут из формы то можно сразу при обработке данных писать $login, при регистр глобалс оф надо явно объявить $login=$_POST['login']
Я верно понимаю?
Неактивен
Ну как, не обязательно делать ее $login, вполне можно пользоваться и переменной в массиве. Просто надо понимать, что при отключенных глоб переменных все данные попадают в соответствующие им массивы ($_GET, $_POST, $_COOKIES, $_SESSION).
Неактивен
при выключенном, переменные сразу передаются, куда нужно. При включенном, сначала передаются в некий массив, потом уже куда нужно. Так? Разве не лучше, то что проще?
Неактивен
Gemorroj написал:
Ну как, не обязательно делать ее $login, вполне можно пользоваться и переменной в массиве. Просто надо понимать, что при отключенных глоб переменных вс� данные попадают в соответствующие им массивы ($_GET, $_POST, $_COOKIES, $_SESSION).
А при включенных?
Неактивен
При использовании $_Сервер это ничего не меняет, они автоматически глобальны т.е. доступны в любой области видимости. Поэтому лучше использовать их.
Неактивен
они все суперглобальны) вообще правильно говорить суперглобальные массивы.
Alaya написал:
потом уже куда нужно
нет! они как раз попадают туда куда НЕ нужно!
вдумайся в эту строчку
$login = $_POST['login'];
правая и левая части равны! что заставляет приранивать их??? если кого-то это напрягает, то можно просто использовать $_POST['login'];
так же при откл глоб переменных сразу видно какая переменная откуда пришла. Лена, поверь, с отключенными глоб переменными код становится не только безопаснее, но и куда читабельнее.
Неактивен
эллементарный скриптик, с автозаменой. С отключенными глобальными переменными не работает...
<?php
include 'head.php';
?>
<div class="g">Перевод:</div>
<form action = "result.php" method="get">
Ваше имя:<br>
<input type="text" name="name" value=""/><br>
Введите текст:<br>
<input type="text" name="msg" value=""/><br>
<input type="submit" value="Перевести"/>
</form>
<?php
include 'foot.php';
?>
<?php
include 'per.php';
$msg = htmlspecialchars(stripslashes($msg));
include 'head.php';
?>
<?php
$file = fopen("data/log/log.txt","a");
fputs($file,$msg."\n");
fclose($file);
chmod ("data/log/log.txt", 0666);
?>
<div class="zagolovok">Переводчик</div>
<div class="main">
<b>Результат перевода:</b><br>
<?php
echo $msg;
?>
<br>
<b>Так же Вы можете скопировать результат через форму:</b><br>
<input type="text" name="servis" value="<?php echo $msg; ?>"/>
<br>
<b>Или</b> <a href="send.php?msg=<?php echo $msg; ?>">отправить</a> <b>его на e-mail.</b>
</div>
<?php
include 'foot.php';
?>
Неактивен
проблема в низком уровне кодинга, а не в глоб переменных.
неужели трудно понять что нужно поменять?
<input type="text" name="name" value=""/><br>
Введите текст:<br>
<input type="text" name="msg" value=""/><br>
ты тут передаешь 2 перменные name и msg
<form action = "result.php" method="get"> - явно указываешь метод GET
следовательно указанные тобой переменные попадают в массив GET, т.е. $_GET['msg'] и $_GET['name']
Неактивен