Как отправить форму на загрузку страницы без нажатия кнопки отправки?

Есть ли способ сделать форму submit "onload" без нажатия кнопки отправки с PHP? Я видел некоторые способы сделать это с помощью Javascript, но я люблю php и id, чтобы сделать это с помощью php.

Например:

<form action="https://xxxxxx.com/yyy.php" method="post" id="foo"> <input type="hidden" name="LoginEmail" value="user [at] domain.com"> <input type="hidden" name="LoginPassword" value="mycleartextpassword"> <input type="submit" name="Authenticate" value="Login"> <input type="hidden" name="Action" value="1" > </form> 

Я могу сделать это с помощью javascript:

 <form id="foo"> .... < /form> <script type="text/javascript"> function myfunc () { var frm = document.getElementById("foo"); frm.submit(); } window.onload = myfunc; </script> 

Ну, можем ли мы сделать то же самое с PHP? Не могли бы вы любезно поделиться своими идеями и советами?

Спасибо.

Solutions Collecting From Web of "Как отправить форму на загрузку страницы без нажатия кнопки отправки?"

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

Таким образом, JavaScript является вашим единственным решением, если вам требуется автоматическая подача. Даже тогда вам нужно убедиться, что есть «нормальное» решение для использования людьми, у которых нет JavaScript. (Радость грациозной деградации и т. Д.)

У меня было diffculty в dong это также так думал, что я бы опубликовал мое решение здесь, это идет …

эта команда curl отправляет файл в URL-адрес и отправляет обратно любые данные, которые он получает. Это размещение XML-файла, поэтому для типа контента установлено приложение / x-www-form-urlencoded. Api i отправлял запрос на то, чтобы данные были закодированы, поэтому я использую –data-urlencode. Я также назначаю имя файла с именем переменной post здесь, так что это похоже на публикацию поля ввода с именем = «безотносительно».

 curl --data-urlencode [post variable name]=@[filename] --header "Content-Type:application/x-www-form-urlencoded" http://[url to send file to] 

Назначение команды переменной легко … см. Ниже "

 content=$(put curl command in here); 

Ps НЕ ЗАБЫВАЙТЕ, ЧТОБЫ ВЫБРАТЬ ЛЮБОЙ '=' или '&' в вашем url, это вызывает проблемы, если вы пытаетесь получить данные.

Если вы хотите автоматически отправить форму после загрузки страницы (IMHO это бессмысленно), я предполагаю, что вы создали свои значения самостоятельно (по PHP-коду), и вы хотите отправить их на другую страницу, верно? Если так перенаправить страницу другому по заголовку (), передавая значения через POST:

 $post_data = 'LoginEmail=username [at] domain.com&LoginPassword=...'; $content_length = strlen($post_data); header('POST /another_page.php HTTP/1.1'); header('Host: fancyhost'); header('Connection: close'); header('Content-type: application/x-www-form-urlencoded'); header('Content-length: ' . $content_length); header(''); header($post_data); exit(); 

это с помощью jquery ajax.

 $(document).ready(function(){..........your code goes here........}); 

если вы предпочитаете jquery replay me, я дам вам помощь

Вот как вы можете выполнить php onpageload. У большинства форм страниц есть какая-то кнопка типа отправки в них, и это элемент, который вы можете использовать для имитации «onpageload». Я использую это, когда хочу сохранить состояние флажка или переключателя, когда клиент переходит со страницы.

 if(isset($_POST["generate"])) { if(isset($_POST["rems"])) { $remarks = "Y"; } else { $remarks = ""; } } else { $remarks = $sess->remarks; } $sess->SetSessionVariable("remarks", $remarks); <input <?php if($remarks != ""){echo 'checked="checked"';}?> id="rems" type="checkbox" name="rems" value="true" style="vertical-align:baseline; margin-bottom:0px <?php if(strcmp($sess->loggedOn, "T") != 0){echo 'visibility: hidden';}?> "/> </label> 

Поэтому, если кнопка с именем generate не установлена, клиент не имел возможности что-либо сделать со страницей, чтобы вы могли установить $ примечания в $ sess-> remarks. $ sess – это мой обработчик сеанса, и если вы используете файлы cookie, вы можете использовать свой файл cookie. Почему обработчик сеанса, потому что я не хочу беспокоиться о настройке клиента, используйте файлы cookie или нет. У меня просто есть таблица базы данных переменных формы, которую я читаю в верхней части страниц.

Теперь, если клиент меняет значение переключателя или флажка, вы можете проверить, какой тип значения следует вставить в переменную $ замечания после отправки формы.

Для вашего onpageload submit вы просто поместите некоторый скрипт после тестирования, чтобы узнать, установлена ​​ли кнопка.

 if(isset($_POST["generate"])) { // page was submitted so do something here } else { // first time in the page so script a redirect to the page being submitted printf("<script>window.location='https://xxxxxx.com/yyy.php'</script>"); }