Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
iopq
8 / 8 / 1
Регистрация: 10.12.2013
Сообщений: 323
1

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

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

есть php скрипт который осуществляет поиск в sql. текстовое поле и кнопка.
PHP
1
if (isset($_POST["Submit"])) {
а как к нему подключить еще и GET?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2017, 15:31
Ответы с готовыми решениями:

Exec() только одному скрипту или дать разрешение только на папку
Вопрос заключается в следующем, нужно как-то разрешить exec только одному файлу или папке....

Обращение к php скрипту
Здравствуйте! Что нужно прописать в php файле, чтобы при обращении к нему можно было увидеть как к...

PHP привязать к скрипту баланс
Помогите пожалуйста как к <p>введите число от 1 до 2 <form method="POST"> <input...

Отправка данных формы PHP -скрипту
Извиняюсь, нашёл косяк удалите тему

Нужна критика по готовому и рабочему скрипту PHP
Дайте здоровую критику по скрипту. Задача скрипта: на основе загружаемого файла с фамилиями и...

42
Блеф
> /dev/null
284 / 118 / 85
Регистрация: 14.05.2014
Сообщений: 767
07.08.2017, 16:04 2
PHP
1
if (isset($_GET["Submit"])) {
0
iopq
8 / 8 / 1
Регистрация: 10.12.2013
Сообщений: 323
07.08.2017, 16:16  [ТС] 3
мне надо что бы один скрипт работал при ручном вводе и нажатии на кнопку а так же при переходе по ссылке вида /script.php?data=12345
т.е пользователь может или ввести данные вручную, нажать кнопку и получить информацию или перейти по ссылке и так же получить информацию
0
Igsit
140 / 140 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.08.2017, 16:27 4
проверяете наличие переменной в массиве $_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
07.08.2017, 16:27
Вилки Выкидные
-3 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
07.08.2017, 16:36 5
Цитата Сообщение от 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
Igsit
140 / 140 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.08.2017, 16:45 6
Цитата Сообщение от Вилы Выкидные Посмотреть сообщение
В форме c методом POST всё, что находится в action="ссылка", отправляется методом GET.
Вы не поняли что именно ему нужно, ему нужно данные передавать ещё и по ссылке, т.е. без формы, вот я и показал рабочий код, выполняющий именно то что он и просил

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

Добавлено через 1 минуту
Цитата Сообщение от Вилы Выкидные Посмотреть сообщение
если переменная есть, но не имеет значения
если переменная есть, т.е. она определена, то она уже имеет какое-то значение, например есть NULL
0
iopq
8 / 8 / 1
Регистрация: 10.12.2013
Сообщений: 323
07.08.2017, 17:00  [ТС] 7
а код запроса к базе и вывода результата нужно один и тот же в 2 места писать? или можно обойтись одним?
0
Вилки Выкидные
-3 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
07.08.2017, 17:14 8
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
Dmitry
Эксперт по компьютерным сетямЭксперт NIX
11058 / 6317 / 527
Регистрация: 09.09.2009
Сообщений: 25,054
07.08.2017, 17:25 9
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
Igsit
140 / 140 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.08.2017, 17:28 10
Вилы Выкидные
PHP
1
2
$_POST['a'] = '';
$_GET['b'] = '';
какой, извиняюсь за выражение, дибил будет делать так, если эти массивы нужны именно для получения данных от клиента ?

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

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

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

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

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

P.S. В целом Вы ничего неправильного не показали, но, не надо новичков (а мы в разделе для начинающих) путать новыми фишками и приёмами, они (новички) итак путаются в этих формах, POST-ах и GET-ах. При использовании нормального движка или написании нормального кода вообще не нужно напрямую работать с этими переменными, но опять же повторю, тут новички и тут надо объяснить основы и как можно проще. Моё мнение, так что если кто не согласен спорить не надо )
0
Вилки Выкидные
-3 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
07.08.2017, 17:54 13
Цитата Сообщение от Igsit Посмотреть сообщение
нормальная проверка
Ну вот меня, например, на этом форуме убедили не использовать isset, но использовать !empty хотя бы
0
iopq
8 / 8 / 1
Регистрация: 10.12.2013
Сообщений: 323
07.08.2017, 18:43  [ТС] 14
подскажите еще как организовать фильтрацию данных? вводиться будут только десятичные числа до 10 знаков
0
Igsit
140 / 140 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.08.2017, 18:56 15
фильтрацию лучше всего делать регулярными выражениями но это достаточно сложно для новичка, а в Вашем случае можно проще, проверить входящие данные на число, и на длину строки
0
Вилки Выкидные
-3 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
07.08.2017, 19:11 16
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
284 / 118 / 85
Регистрация: 14.05.2014
Сообщений: 767
07.08.2017, 20:10 17
Igsit, вы до сих пор на php 4? Почему бы не использовать встроенные функции filter_input_array, filter_input? И красивее и понятней.
0
iopq
8 / 8 / 1
Регистрация: 10.12.2013
Сообщений: 323
07.08.2017, 20:41  [ТС] 18
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
Jewbacabra
Эксперт PHP
4032 / 3314 / 1429
Регистрация: 24.04.2014
Сообщений: 10,022
07.08.2017, 22:20 19
del
0
Igsit
140 / 140 / 63
Регистрация: 18.07.2014
Сообщений: 473
07.08.2017, 22:25 20
Цитата Сообщение от bleef159 Посмотреть сообщение
вы до сих пор на php 4?
Использовать можно что угодно, я например вообще не пользуюсь этими переменными (по крайней мере напрямую), повторюсь, для начинающих нужно объяснить как можно проще и понятнее, и нет, я уже давно не на php 4, хотя некоторые новички до сих пор начинают именно с него, всякие там денверы и прочие недоразумения

Добавлено через 1 минуту
Цитата Сообщение от iopq Посмотреть сообщение
посмотрите пожалуйста насколько это вообще безопасно вот так доставать данные?
так вообще небезопасно, sql-инъекции ещё никто не отменил )
0
07.08.2017, 22:25
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2017, 22:25

Выполнить запрос к php-скрипту, а затем перейти на Webmoney Merchant.
Здравствуйте, застрял в отправке формы. Вот форма: &lt;form id=pay name=pay method=&quot;POST&quot;...

Php запрос к MYSQL полученные значения нужно передать скрипту javascript
Доброго времени суток такая задача php запрос к MYSQL, полученные значения заносятся в переменные...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru