Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Зациклилась кнопка, нужна консультация

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
yesinmsg
Отправлено: 26 Января, 2019 - 17:05:30
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2019  


Помог: 0 раз(а)




Здравствуйте, есть 3 кнопки: выключить, перезагрузить и выполнить, отрабатывают они нормально. Однако после перезагрузки страницы выполняется действие последней нажатой кнопки. Я искал как очищать пост запросы, но это не помогает

Выполнять unset в теле кнопок после действия я так же пробовал, не очищается после перезагрузки страницы

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.    if(!empty($_POST)){
  3.       unset($_POST);
  4.       header('location:'.$_SERVER['PHP_SELF']);
  5.       die();
  6. }
  7.     if(isset($_POST['controlkeys1']))
  8. {
  9. exec("sudo shutdown");
  10. header("Refresh:0");
  11. }
  12.     if(isset($_POST['controlkeys2']))
  13. {
  14. exec("sudo reboot");
  15. header("Refresh:0");
  16. }
  17.     if(isset($_POST['controlkeys3']) && !empty($_POST['txtName']))
  18. {
  19. exec($_POST['txtName']);
  20. header("Refresh:0");
  21. }
  22.  
  23. ?>
  24. <center>
  25. <form method="POST">
  26.     <button type="submit" name="controlkeys1" value="shutdown" />Выключить</button>
  27.     <button type="submit" name="controlkeys2" value="reset" />Перезагрузить</button>
  28.     <br/>
  29.     <input type="text"   name="txtName" size="40" maxlength="35" value="sudo ls /">
  30.     <button type='submit' name="controlkeys3" value="runcmd" />Выполнить команду</button>
  31. </form>
  32. </center>


reset так же пробовал
 
 Top
difight
Отправлено: 29 Января, 2019 - 14:27:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 355
Дата рег-ции: Нояб. 2011  


Помог: 3 раз(а)




а unset случайно не после header("Refresh:0"); вставляли ?Улыбка Если да, то попробуйте перед ним вставить

(Отредактировано автором: 29 Января, 2019 - 14:27:41)

 
My status
 Top
Мелкий Супермодератор
Отправлено: 29 Января, 2019 - 14:30:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Сделайте редирект как в 4 строке.
unset для любых $_POST, $_GET, $_COOKIE, $_SERVER делать бесполезно, их присылает клиент и если клиент их опять пришлёт - конечно они никуда не пропадут.


-----
PostgreSQL DBA
 
 Top
difight
Отправлено: 29 Января, 2019 - 14:34:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 355
Дата рег-ции: Нояб. 2011  


Помог: 3 раз(а)




Мелкий пишет:
Сделайте редирект как в 4 строке.
unset для любых $_POST, $_GET, $_COOKIE, $_SERVER делать бесполезно, их присылает клиент и если клиент их опять пришлёт - конечно они никуда не пропадут.

А разве unset не очистит $_POST, поидее должен и тогда он в условия свои не попадет
 
My status
 Top
Мелкий Супермодератор
Отправлено: 29 Января, 2019 - 14:49:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




difight, во время которого из запусков скриптов?
Если не поняли, почему я спрашиваю именно так - вы просто не понимаете, как работает shared nothing архитектура PHP. Между разными запусками одного скрипта нет совершенно никакой связи. Кроме той, что запрограммируете самостоятельно.
Да, вы можете сделать unset($_POST); Он выполнится, удалит эту переменную, затем скрипт завершится, браузер пришлёт новый запрос, PHP инициализирует окружение заново. Почему здесь не должно быть $_POST, если клиент его прислал?

difight пишет:
а unset случайно не после header("Refresh:0"); вставляли ?

Кстати сюда тоже прокомментирую: не имеет значения. header не прерывает поток выполнения скрипта и как правило не будет отправлен клиенту до начала вывода страницы (или завершения скрипта).


-----
PostgreSQL DBA
 
 Top
difight
Отправлено: 29 Января, 2019 - 15:04:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 355
Дата рег-ции: Нояб. 2011  


Помог: 3 раз(а)




Мелкий пишет:
difight, во время которого из запусков скриптов?
Если не поняли, почему я спрашиваю именно так - вы просто не понимаете, как работает shared nothing архитектура PHP. Между разными запусками одного скрипта нет совершенно никакой связи. Кроме той, что запрограммируете самостоятельно.
Да, вы можете сделать unset($_POST); Он выполнится, удалит эту переменную, затем скрипт завершится, браузер пришлёт новый запрос, PHP инициализирует окружение заново. Почему здесь не должно быть $_POST, если клиент его прислал?

difight пишет:
а unset случайно не после header("Refresh:0"); вставляли ?

Кстати сюда тоже прокомментирую: не имеет значения. header не прерывает поток выполнения скрипта и как правило не будет отправлен клиенту до начала вывода страницы (или завершения скрипта).

Понял о чем вы, спасибо за разъяснение Улыбка
 
My status
 Top
yesinmsg
Отправлено: 30 Января, 2019 - 18:26:22
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2019  


Помог: 0 раз(а)




Мелкий пишет:
Сделайте редирект как в 4 строке.
unset для любых $_POST, $_GET, $_COOKIE, $_SERVER делать бесполезно, их присылает клиент и если клиент их опять пришлёт - конечно они никуда не пропадут.


Выполнять редирект после нажатия кнопки я не могу, так как сервер либо выключается либо идет на перезагрузку, перенаправление просто не успеет выполнится, соответственно если я отправляю $_POST даже после перезагрузки страницы почему не выполняется это условие изначально, в этой проверке ведь происходит редирект
PHP:
скопировать код в буфер обмена
  1.    if(!empty($_POST)){
  2.       unset($_POST);
  3.       header('location:'.$_SERVER['PHP_SELF']);
  4.       die();
  5. }


Спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB