[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как передать данные из браузера на сайт
shawlow
Вопрос к знатокам. Для знающих задачка простая, а я что-то никак не справлюсь.

У меня не передаются данные из браузера в форму на сайте
Клиент заполняет простую форму и жмет "Отправить", но данные не передаются в форму.
Однако, всё работает, когда REGISTER_GLOBALS включен. Но как я понял, это не способствует безопасности сайта.
Как справиться с этой задачкой, не включая REGISTER_GLOBALS ?

Я знаю, что надо воспользоваться MosGetParam
$переменная1 = mosGetParam( $_REQUEST, 'имя_параметра', 'значение_по_умолчанию' );

Я так понимаю, что переменные, после передачи их на сайт в файл 1forma.php надо переопределить на другие и при этом они очищаются от кода html функцией MosGetParam.

Но как это надо сделать? Покажите, кто знает, на простеньком примере.
Он записан в корне сайта в файле 1forma.php (я его предельно упростил):

<? Error_Reporting(E_ALL & ~E_NOTICE);
$adresat = "shawlow@mail.ru";
$status = "Админ";
$msg = "Спасибо $name, Ваше сообщение было отправлено и мы обязательно Вам ответим!";
$you = "$status. E-mail: $adresat";
if ($submit)
{
if(empty($name)) echo "Введите Вашу Фамилию, имя";
else
{
$msg2 = "Имя: $name\n";
mail("$adresat", "Заявка на отдых","$msg2\n","Content-type: text/plain; charset=windows-1251");
echo "$msg<b>\n";
}
}

else {
?>


<form action="<? echo $PHP_SELF?>" method=POST>
<
table bgcolor="#EEF6FF" align="center" cellpadding="0" cellspacing="0" width="100%">

<
tr>
<
td><font face="Arial" color="red"><span style="font-size:10pt;">  Фамилия</span></font></td>
<
td> <INPUT type=text size=70 name="name" ></td>
</
tr>

<
tr align="center">
<
td colspan="2">
<
br><INPUT type=submit value="Послать" name="submit">
<
INPUT type=reset value="Очистить" name="reset">
</
td>
</
tr>
</
table>
</
form>


<?
} // end "else" and end of this script)
?>


Заранее благодарен.
С наступающим Новым Годом!



Спустя 1 час, 1 минута, 50 секунд (30.12.2008 - 16:18) gaizjad написал(а):
Привет.
PHP
$name=$_POST['name'];

И так всё остальное... wink.gif

Спустя 23 часа, 13 минут, 19 секунд (31.12.2008 - 15:31) gaizjad написал(а):
Напишу простой пример. Чтобы было понятнее сделаю 2 формы:

1) Передача параметров - index.html
HTML
<form action="1.php" method="post">
<input type="text" name="name" /><br />
<input type="submit" value="Send" />
</form>


2) Скрипт, принимающий параметры - 1.php
PHP
<?php
$name
=$_POST['name'];
// теперь можно свободно использовать $name
 
echo $name// выдаст то, что вы написали в index.html в текстовом поле

Спустя 7 дней, 8 часов, 31 минута, 13 секунд (9.01.2009 - 00:03) shawlow написал(а):
Спасибо gaizjad за подсказку,но я
воспользовался $HTTP_POST_VARS['Имя']. Это староая форма написания. Это одно и тоже, что и ты предлагаешь. Все работает, спасибо!

Полный текст примера - работает:


PHP
<? 
Error_Reporting(E_ALL & ~E_NOTICE);

$adresat "sha@mail.ru";


//if (isset($HTTP_POST_VARS['fio'])) // можно и так,  равносильно нажатию кнопки ПОСЛАТЬ!!!
//if (Trim($fio)=="")) echo "Введите фамилию--->\n";
//else   

if (isset($HTTP_POST_VARS['send'])) // кнопка ПОСЛАТЬ!!!
 
       {$fio=$HTTP_POST_VARS['fio'];
 
 $msg "Спасибо "."$fio".", Ваше сообщение было отправлено и мы обязательно Вам ответим!";
 
        mail("$adresat""Заявка","$msg\n","Content-type: text/plain;  charset=windows-1251");
 
        echo "$msg<b>\n";
 
 unset($fio);
 
 }
    
else {
?>

 
<form action="<? echo $PHP_SELF?>" method="post">
<table  bgcolor="#EEF6FF" align="center" cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td><font face="Arial" color="red"><span style="font-size:10pt;">&nbsp;&nbsp;Фамилия имя</span></font></td>
        <td> <INPUT  type=text size=70 name="fio" ></td>
    </tr>
    <tr align="center">
        <td colspan="2">
            <br><INPUT type=submit value="Послать" name="send"> 
            <INPUT type=reset value="Очистить" name="reset">
        </td>
    </tr>
</table>
</form>
<?
// end "else" and end of this script)


Пользователь заполняет АНКЕТУ и отправляет мне.

Gaizjad посоветуй, какие книги почитать по PHP5?
Каким редактором посоветуешь пользоваться для создания объектно-ориентированных программ на PHP?


Спустя 11 месяцев, 25 дней, 10 часов, 22 минуты, 43 секунды (4.01.2010 - 10:25) gaizjad написал(а):
упс...
сорри за немного опаздавший ответ smile.gif
вобщем книг по пхп в интернете много, я читал Лаура Томсон,Люк Веллинг "РНР и Муsql", "Профессиональное РНР программирование 2-е издание"
Насчёт редакторов - это уже на твоё усмотрение, я пользуюсь Quanta и Geany под Linux, или Dreamweaver под вин.

Спустя 2 месяца, 15 дней, 14 часов, 21 минута, 1 секунда (20.03.2010 - 00:46) nickopol написал(а):
Цитата (gaizjad @ 31.12.2008 - 12:31)
Напишу простой пример. Чтобы было понятнее сделаю 2 формы:

1) Передача параметров - index.html
<form action="1.php" method="post">
<input
type="text" name="name" /><br />
<input
type="submit" value="Send" />
</form>



2) Скрипт, принимающий параметры - 1.php
<?[SPAN=darling]php[/SPAN]
$name=$_POST['name'];
// теперь можно свободно использовать $name
 echo $name; // выдаст то, что вы написали в index.html в текстовом поле

Огромное спасибо за Ваш совет!!! Мне очень помог. Я 2а дня бился над формой. Только вот вопрос в видео курсе про это вообще не было не слова и что самое интересное, у него эта форма работала.
А у меня форма в писме образовывалась, только она была пустая (без данных). Вот я и ломал голову как данные из html перекинуть в PHP. Спасибо ОГРОМНОЕ. user posted image

Спустя 6 месяцев, 22 дня, 14 часов, 22 минуты, 3 секунды (12.10.2010 - 14:08) khrapsha написал(а):
Всем добрый день!
А можно также доходчиво подсказать по следующей ситуации:
Немного изменим предыдущий пример:

Есть исходный файл
1) Передача параметров - index.php

<form action="1.php" method="post"><input type="text" name="name" /><br /><input type="submit" value="Send" /></form>


2) Скрипт, принимающий параметры - 1.php

<?php$name=$_POST['name'];// теперь можно свободно использовать $name echo $name; // выдаст то, что вы написали в index.html в текстовом поле

// допустим, здесь как-то меняется переменная:
$kluch="no";

3) а как можно передать новое значение переменной $kluch в index.php, но через строку параметров типа index.php?no

С уважением, Дмитрий

Спустя 1 час, 52 минуты, 10 секунд (12.10.2010 - 16:00) Dron19 написал(а):
просто при проверке нажата ли кнопка пишите не просто if ($submit)...., а именно если у вас выключена регистр глобалс, то используйте уже такой синтаксис if($POST['submit']).....
если в форме конечно указан тип передачи пост
Функция регистр глобалс регистрирует глобальные переменные, то есть $submit у вас бы появилась, так как является глобальной, если отключить эту функцию, то я уже говорил чтто нужно делать, а вообще новичкам лучше страховаться всегда и писать так:
$submit = $POST['submit'];
ну, а я делаю подругому
в файле где подключаюсь к бд пишу:
if(ini_get('register_globals') == '0') {
ini_set('register_globals','1');
}

Спустя 1 час, 11 минут, 5 секунд (12.10.2010 - 17:12) eXaM написал(а):
Гм, всегда думал, что REGISTER_GLOBALS нужно обязательно отключать, ведь это огромнейший простор для хакера. Если переменных передается сразу несколько, можно запросто допустить ошибку и столкнуться с проблемой недостаточной фильтрации входящих данных. А это
if(ini_get('register_globals') == '0') {
ini_set('register_globals','1');
}

лучше сделать в обратную сторону.

Спустя 7 минут, 25 секунд (12.10.2010 - 17:19) khrapsha написал(а):
А как тогда быть?..

Спустя 8 минут, 58 секунд (12.10.2010 - 17:28) eXaM написал(а):
Пользоваться одним методом. Я не понял, зачем вам отправлять введенные данные методом POST, да еще и GET'ом вдогонку посылать значение переменной. А вообще, я не уверен, что правильно осознаю суть проблемы. Объясните, пожалуйста, что меняет значение $kluch.

Спустя 19 часов, 38 минут, 22 секунды (13.10.2010 - 13:06) khrapsha написал(а):
Прошу прощения, я толком не объяснил.
есть задача - не зарегстрированным пользователям показывать одну страницу, а зарегистрированным - почти ту же, но с дополнительными возможностями просмотра.

В сети нашел скрипты, реализующие эту идею, но не смог применить у себя.
В скриптах после успешной авторизации пользователь перенаправляется на закрытую страницу - и все нормально. Но у меня страница как бы собирается из 3-х частей:
1 - блок шапки
2 - блок с авторизацией (сюда же выводятся сообщения об ошибках авторизации, напоминание пароля и в случае успешной авторизации - также сообщение о выходе)
3 - блок информации.

В блок информации вставляется либо файл с общей информацией, либо, в случае успешной авторизации, блок с дополнительной информацией в зависимости от значения переменной $kluch.

страничка собирается так: index.php?razdel&paragraf&statia

Из файла с авторизацией методом POST посылается имя и пароль в файл login.php. А в этом login.php мне нужно присвоить значение переменной $kluch и вернуть его в вызывающий файл, где и соберется вся страничка.

Вот примерно так, простите за косноязычие... Быть может, задумано не очень красиво, но вот по-другому не сообразил...

Спустя 25 минут, 41 секунда (13.10.2010 - 13:32) Raskolnikoff написал(а):
Первое, что пришло в голову - redirect. Т.е. сделать так
header('Location: [URL=http://site.com/index.php?klutch=no');

Спустя 36 минут, 25 секунд (13.10.2010 - 14:08) khrapsha написал(а):
так ведь тогда этот параметр будет виден в командной строке браузера и любой незарегистрированный пользователь может, набрав параметр, войти на закрытую страницу... или я неправ?... что-то торможу....

Спустя 55 минут, 53 секунды (13.10.2010 - 15:04) Raskolnikoff написал(а):
Да, будет виден. Я думал, вы так и хотите)
Если нужно, чтоб был не виден, можете поискать по поводу функции header. Там есть вроде какой то параметр для передачи get и post запросов.

Спустя 21 минута, 43 секунды (13.10.2010 - 15:26) khrapsha написал(а):
ага, спасибо, сейчас посмотрю...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.