Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
11 / 11 / 1
Регистрация: 10.12.2013
Сообщений: 391

Post и get к одному php скрипту

07.08.2017, 15:31. Показов 1455. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть php скрипт который осуществляет поиск в sql. текстовое поле и кнопка.
PHP
1
if (isset($_POST["Submit"])) {
а как к нему подключить еще и GET?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.08.2017, 15:31
Ответы с готовыми решениями:

POST запрос к скрипту PHP
Здравствуйте. Подскажите, как составить POST запрос к серверу на PHP, чтоб он был таким, как у обычной формы такого типа: <!DOCTYPE...

Как передать данные через POST из php другому скрипту
Как передать данные через POST из php другому скрипт?

Отправка POST запроса php скрипту при выборе элемента
Есть форма, что то типо: <form> <form action="" id="myform"> <input type="text" name="mydata" id="mydata" /> <input...

42
> /dev/null
 Аватар для Блеф
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767
07.08.2017, 16:04
PHP
1
if (isset($_GET["Submit"])) {
0
11 / 11 / 1
Регистрация: 10.12.2013
Сообщений: 391
07.08.2017, 16:16  [ТС]
мне надо что бы один скрипт работал при ручном вводе и нажатии на кнопку а так же при переходе по ссылке вида /script.php?data=12345
т.е пользователь может или ввести данные вручную, нажать кнопку и получить информацию или перейти по ссылке и так же получить информацию
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.08.2017, 16:27
проверяете наличие переменной в массиве $_POST если установлена то значит запрос POST т.е. через форму, а если она не установлена то значит запрос не POST а GET, т.е. по ссылке, и далее проверяете наличие переменной в массиве $_GET т.е. то что было передано в ссылке

Добавлено через 5 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (isset($_POST['Submit'])) {
    // запрос через форму
    // тут используем ваше текстовое поле, например оно с именем data
    echo 'Данные получены из формы: '.$_POST['data'];
}
else {
    // запрос не через форму
    // сначала проверим были ли данные в ссылке
    if (isset($_GET['data'])) {
        // используем данные из ссылки
        echo 'Данные получены из ссылки: '.$_GET['data'];
    }
    else {
        // если просто ссылка без данных
        echo 'Нет никаких данных';
    }
}
1
97 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
07.08.2017, 16:36
Цитата Сообщение от iopq Посмотреть сообщение
а как к нему подключить еще и GET?
В форме c методом POST всё, что находится в action="ссылка", отправляется методом GET.

Добавлено через 4 минуты
Цитата Сообщение от Igsit Посмотреть сообщение
isset($_POST['Submit'])
isset вернёт true, если переменная есть, но не имеет значения, а так же если переменная определена, но не передана методом POST

юзаем

PHP
1
2
3
if (filter_has_var(INPUT_POST, 'Submit')) {
    # код
}
1
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.08.2017, 16:45
Цитата Сообщение от Вилы Выкидные Посмотреть сообщение
В форме c методом POST всё, что находится в action="ссылка", отправляется методом GET.
Вы не поняли что именно ему нужно, ему нужно данные передавать ещё и по ссылке, т.е. без формы, вот я и показал рабочий код, выполняющий именно то что он и просил

Цитата Сообщение от Вилы Выкидные Посмотреть сообщение
isset вернёт true, если переменная есть, но не имеет значения, а так же если переменная определена, но не передана методом POST
в данном случае у меня всё работает как надо, не путайте людей, никто не будет определять переменную $_POST['Submit'], а тут достаточно того что она определена, т.е. нажата кнопка на форме, ну я бы ещё конечно добавил проверку наличия $_POST['data'], ну это ведь только пример

Добавлено через 1 минуту
Цитата Сообщение от Вилы Выкидные Посмотреть сообщение
если переменная есть, но не имеет значения
если переменная есть, т.е. она определена, то она уже имеет какое-то значение, например есть NULL
0
11 / 11 / 1
Регистрация: 10.12.2013
Сообщений: 391
07.08.2017, 17:00  [ТС]
а код запроса к базе и вывода результата нужно один и тот же в 2 места писать? или можно обойтись одним?
0
97 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
07.08.2017, 17:14
Igsit,

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$_POST['a'] = '';
$_GET['b'] = '';
if (isset($_POST['a'], $_GET['b'])) {
    echo 'Переменные a и b найдены, но они не передана методом POST или GET и работа скрипта продолжается с ошибками';
}
?>
<br>
<?php
if (filter_has_var(INPUT_POST, 'c')) {
    echo 'Переменная c пришла методом POST';
}
?>
<br>
<?php
if (filter_has_var(INPUT_GET, 'd')) {
    echo 'Переменная d пришла методом GET';
}
?>
<form action="?d" method="post">
    <button name="c">Отправить</button>
</form>
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
07.08.2017, 17:25
PHP
1
2
3
4
5
6
7
8
9
10
11
foreach ($_POST as $key => $value){
    $input[$key]=$value;
}
foreach ($_GET as $key => $value){
    $input[$key]=$value;
}
// в итоге, в массиве $input будут все данные, 
// переданные как GET так и POST. единственное, 
// нехорошо будет, если ключи каких-то значений для GET 
// и POST использованы одинаковые.
print_r($input);
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.08.2017, 17:28
Вилы Выкидные
PHP
1
2
$_POST['a'] = '';
$_GET['b'] = '';
какой, извиняюсь за выражение, дибил будет делать так, если эти массивы нужны именно для получения данных от клиента ?

Добавлено через 1 минуту
т.е. по Вашему нужно наговнокодить и потом ещё и говнокодом это исправлять?
Делайте как нужно и не надо будет придумывать костыли
0
97 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
07.08.2017, 17:30
Цитата Сообщение от Igsit Посмотреть сообщение
дибил будет делать так
Мало ли умельцев

Я просто сгенерировал ошибку для примера, чтобы показать уязвимость isset по отношению к filter_has_var, которая проверит, пришла ли переменная определённым методом.

Хамить не нужно, нужно просто перестать втыкать везде isset.
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.08.2017, 17:48
Цитата Сообщение от Вилы Выкидные Посмотреть сообщение
Я просто сгенерировал ошибку для примера
пример правильный, не спорю

Цитата Сообщение от Вилы Выкидные Посмотреть сообщение
Хамить не нужно
я не хамил, по крайней мере не хотел, прошу прощения если подумали что хотел Вас оскорбить

Цитата Сообщение от Вилы Выкидные Посмотреть сообщение
нужно просто перестать втыкать везде isset
ну почему это? нормальная проверка, так можно докопаться до любой конструкции и показать примеры где другие варианты будут уязвимы

P.S. В целом Вы ничего неправильного не показали, но, не надо новичков (а мы в разделе для начинающих) путать новыми фишками и приёмами, они (новички) итак путаются в этих формах, POST-ах и GET-ах. При использовании нормального движка или написании нормального кода вообще не нужно напрямую работать с этими переменными, но опять же повторю, тут новички и тут надо объяснить основы и как можно проще. Моё мнение, так что если кто не согласен спорить не надо )
0
97 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
07.08.2017, 17:54
Цитата Сообщение от Igsit Посмотреть сообщение
нормальная проверка
Ну вот меня, например, на этом форуме убедили не использовать isset, но использовать !empty хотя бы
0
11 / 11 / 1
Регистрация: 10.12.2013
Сообщений: 391
07.08.2017, 18:43  [ТС]
подскажите еще как организовать фильтрацию данных? вводиться будут только десятичные числа до 10 знаков
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.08.2017, 18:56
фильтрацию лучше всего делать регулярными выражениями но это достаточно сложно для новичка, а в Вашем случае можно проще, проверить входящие данные на число, и на длину строки
0
97 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
07.08.2017, 19:11
iopq,

Как вариант

PHP
1
2
3
4
5
6
7
8
9
<?php
if (filter_has_var(INPUT_POST, 'do')) {
    echo $_POST['amount'];
}
?>
<form action="" method="post">
    <input type="number" step="any" name="amount" placeholder="Введите число" required autofocus>
    <button name="do">Отправить</button>
</form>
в БД создать ячейку с типом данных - DECIMAL(длина всего числа, размер только дробной части числа)

input с типом number отправит дробное число с разделителем в виде точки даже если пользователь введёт дробную часть через запятую
0
> /dev/null
 Аватар для Блеф
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767
07.08.2017, 20:10
Igsit, вы до сих пор на php 4? Почему бы не использовать встроенные функции filter_input_array, filter_input? И красивее и понятней.
0
11 / 11 / 1
Регистрация: 10.12.2013
Сообщений: 391
07.08.2017, 20:41  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (isset($_GET['data'])) {
$b=$_GET['data'];
$result=mysql_query("SELECT* FROM db WHERE data = '$b'", $db);
$row = mysql_fetch_array($result);
if (isset($row['data']) && !empty($row['data'])) {
$result=mysql_query("SELECT* FROM db WHERE data = '$b'", $db);
while ($row=mysql_fetch_array($result))
{
$id=$row["id"];
echo "<p><strong>$id</strong></p>";
}
}
else
{
echo "<p><strong>Данные не найдены</strong></p>";
}
}
посмотрите пожалуйста насколько это вообще безопасно вот так доставать данные?
тип поля data - bigint(20)
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
07.08.2017, 22:20
del
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.08.2017, 22:25
Цитата Сообщение от bleef159 Посмотреть сообщение
вы до сих пор на php 4?
Использовать можно что угодно, я например вообще не пользуюсь этими переменными (по крайней мере напрямую), повторюсь, для начинающих нужно объяснить как можно проще и понятнее, и нет, я уже давно не на php 4, хотя некоторые новички до сих пор начинают именно с него, всякие там денверы и прочие недоразумения

Добавлено через 1 минуту
Цитата Сообщение от iopq Посмотреть сообщение
посмотрите пожалуйста насколько это вообще безопасно вот так доставать данные?
так вообще небезопасно, sql-инъекции ещё никто не отменил )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.08.2017, 22:25
Помогаю со студенческими работами здесь

Отправить POST запрос PHP скрипту (перевести код с Visual Basic .NET)
Здравствуйте уважаемые форумчане. Начал увлекаться программированием на C++/CLI и возникла проблема. Итак, у меня есть программа на...

Как обратиться к одному скрипту из другого?
Монстрик получает урон, но в тело он получает 3 урона, в голову 5.... в руку 1 урон. На каждой части тела стоит свой скрипт, копящий в себе...

Как привязать к одному js скрипту несколько select
Доброго времени суток, есть таблица: &lt;table name=&quot;TableCar&quot; align=&quot;center&quot;&gt; &lt;h3 align=&quot;center&quot;&gt;Учет...

Направить все запросы одному скрипту используя htaccess
Необходимо перенаправить обработку всех страниц на index.php который лежи в папке flober Пробовал такие варианты, ни один не сработал ...

Visual basic. Как послать POST запрос скрипту на сервере?
Я далеко не профессионал в программировании, потому и задаю этот, наверно странный вопрос. Вот например если у нас есть HTML страница с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru