Jump to content
  • 0

Не могу передать данные из формы в скрипт


[-=Z77=-]
 Share

Question

Ребята, нужна помощь! Который день не могу понять почему не работает.

Проблема в следующем: стоит DENWER, на странице html (в тэгах <form>) есть простейшая форма ввода текста (естественно с именем txt) и кнопкой submit, есть файл с php кодом (банально <?php echo "Вы ввели: $txt";?>), путь к файлу правильный, передаю get`ом (пробовал post), но... в результате имею фразу: Вы ввели ... и пустота, хотя в адресной строке http://localhost/1.php?txt=ddd (при вводе ddd).

DENWER переустанвливал, разные варианты соединения переменной со строкой через {} и . тоже пробовал, менял имя переменной, проверял одинарные и двойные кавычки - не помогает. В чем проблема?

Спасибо.

Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0

А если так:

<?php
error_reporting(E_ALL | E_NOTICE);
$test = $_GET['test'];
if (isset($_GET['test']))
{
echo '<p>Вы ввели: '.$test.'</p>';
}
?>
<form action="" method="get">
<input name="test" type="text">
<input type="submit" value="Отправить">
</form>

выведет:

Notice: Undefined index: test in /var/www/example.com/newfile.php on line 3

Call Stack:

0.0007 90472 1. {main}() /var/www/example.com/newfile.php:0

<form action="" method="get">

<input name="test" type="text">

<input type="submit" value="Отправить">

</form>

Link to comment
Share on other sites

  • 0

что почему?

Почему нотис выскакивает?

потому что $_GET['test'] не существует, поскольку не была передана.

или почему нотис раньше не выскакивал, а теперь выскакивает?

потому что включаем отображение нотисов с помощью

error_reporting(E_ALL | E_NOTICE);

Также это можно включить в php.ini, чтобы он все время выдавал нужные ошибки.

Link to comment
Share on other sites

  • 0

Но ведь и без ноиса можно выводить ошибку если переменная не передана:

else

{

echo '<p>Вы ничего не ввели</p>';

}

Эта ошибка принципиальна?

Я к тому, для чего ты мне вообще об этом сказал то?

Или на большинство хостов в инишниках включена эта проверка на ошибки?... Да вроде я такого не замечал.

Link to comment
Share on other sites

  • 0

Да, конечно можно выводить ошибку без нотиса.

НО

во-первых, это ошибка. При разработке стоит обращать внимание на все ошибки . Даже типа E_STRICT. Иначе потом можно очень сильно ошибиться в расчетах.

во-вторых, невозможно наверняка сказать включены на хостинге эти ошибки или нет. И нехорошо будет если пользователю в какой-то момент будут выводиться одни нотисы на целую страницу.

в-третьих, это данные, которые приходят от пользователя. И они должны проверяться со всех сторон, а на существование и пустоту в первую очередь.

Link to comment
Share on other sites

  • 0

т.е. в таком контексте

$test = $_GET['test']; 
if (isset($_GET['test']))

надо сначала написать if (isset($_GET['test'])), а потом уже присваивать его значиение переменной?

уважаемые прогеры )) подскажите пожалуйста:

есть вот такой хеадер:

header("Location: http://127.0.0.1/registration.php?err=$err&us_name=$us_name&us_passw=$us_passw&us_mail=$us_mail")

точнее это полный бред, потому что он работает не так как я хочу. а как сделать правильно я не знаю.

меня устраивало как я возвращался на страничку с помощью такого хеадера, но он же не берет данные, сформированные в файле с этим хеадером.

т.е. в теле файла есть присвоение $err="1" или $err="0"

но как мне эту переменную передать в registration.php ??? что бы он не останавливался на страничке, а перешел на этот самый registration.php

?? ну если не понятно телепат_моде уж пожалуйста включите :з)

Edited by Mike-Eci
Link to comment
Share on other sites

  • 0

А с помощью ссылки никак?

<a href="registration.php?err=1">ссылка</a>

И в registration.php уже:

<?php 
if (isset($_GET['err']))
{
$err = $_GET['err'];
if ($err == '1')
{
$err = если err равно 1 то здесь что то присваивается;
}
}
далее выводим переменну err:
<div><?php echo $err; ?></div>
?>

Или я чего то недопонял?

Edited by rus
Link to comment
Share on other sites

  • 0
т.е. в таком контексте

$test = $_GET['test']; 
if (isset($_GET['test']))

надо сначала написать if (isset($_GET['test'])), а потом уже присваивать его значиение переменной?

да, именно так

уважаемые прогеры )) подскажите пожалуйста:

есть вот такой хеадер:

header("Location: http://127.0.0.1/registration.php?err=$err&us_name=$us_name&us_passw=$us_passw&us_mail=$us_mail")

точнее это полный бред, потому что он работает не так как я хочу. а как сделать правильно я не знаю.

меня устраивало как я возвращался на страничку с помощью такого хеадера, но он же не берет данные, сформированные в файле с этим хеадером.

т.е. в теле файла есть присвоение $err="1" или $err="0"

но как мне эту переменную передать в registration.php ??? что бы он не останавливался на страничке, а перешел на этот самый registration.php

?? ну если не понятно телепат_моде уж пожалуйста включите :з)

хеадеры срабатывают нормально, при передаче параметров по гет

example.php

$err = 1;
$myerr = 2;
header("Location: http://www.example.com/test.php?err=$err&myerr=$myerr");

test.php

var_dump($_GET);

выведет:

array(2) { ["err"]=> string(1) "1" ["myerr"]=> string(1) "2" }

Но если не срабатывает такой способ, то можно использовать сессии. Но передавать имя пользователя и пароль по гет не советую. Лучше использовать метод пост или сессии.

Link to comment
Share on other sites

  • 0

:) ЁКСЕЛЬ МОКСЕЛЬ!!! ДЕЙСТВИТЕЛЬНО РАБОТАЕТ!!!! Я И НЕ ЗНАЛ ЧТО ТАК МОЖНО ХЕАДЕР ИСПОЛЬЗОВАТЬ!!!! я думал что только пока поезд не ушел (или как это называют, когда не в первом символе начинается хеадер)

ПАРНИ, СПАСИБО !!!

клёво когда есть люди, которым не сложно подсказать и помочь!!

это получается <?php тут весь код, и в конце где то хеадер можно написать и сработает ?> да?

в общем то даже это не вопрос.. я уже убедился что работает.. :-) спасибо еще раз!

Edited by Mike-Eci
Link to comment
Share on other sites

  • 0
это получается <?php тут весь код, и в конце где то хеадер можно написать и сработает ?> да?

в общем то даже это не вопрос.. я уже убедился что работает.. :-) спасибо еще раз!

хедер можно посылать пока не посланы никакие другие хедеры. Обычный вывод через echo шлёт заголовки, поэтому после вывода послать хедеры уже нельзя будет.

Link to comment
Share on other sites

  • 0
хедер можно посылать пока не посланы никакие другие хедеры. Обычный вывод через echo шлёт заголовки, поэтому после вывода послать хедеры уже нельзя будет.

Как сделать переход на другую страницу с помощью header("Location:page.php"), если для исполнения хедера стоит условие? Если хедер должен стоять до всех echo, а условие следует после этих самых echo, то как тогда сделать перенаправление? :)

Упс...

Пришел сам к ответу на свой вопрос. :)

ob_start(); и ob_end_flush();

Ато уже забил тревогу. :)

Link to comment
Share on other sites

  • 0

Ужас! Чуть не свихнулся.

Я, наверно, чего-то еще не понимаю... Но почему когда происходит через header переход на другую страницу, то css для это страницы берется не родная, а со страницы, ее направившей? :) Было смешно смотреть, когда я в новой странице снес файл css, а она все равно отобразилась. Сначала подумал: "чертовщина какая-то"... :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy