2011-01-19 2 views
4

Есть ли способ сделать форму submit "onload" без нажатия кнопки submit с 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? Не могли бы вы любезно поделиться своими идеями и советами?

спасибо.

+0

Итак, что вы имеете в виду? php может выполнять эту работу? или не могу сделать это? whats your mean – Andrew

+0

Он не может сделать работу – Tobias

+0

@Tobiask, спасибо за четкий ответ. – Andrew

ответ

4

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

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

1

Если вы хотите автоматически отправить форму после загрузки страницы (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(); 
+0

спасибо за совет. ну, мы нашли так много способов в течение 5 минут :) вот почему я люблю php. в Php всегда есть еще один способ. Спасибо друг. я тоже испытаю ваш путь. – Andrew

0

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

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

если вы предпочитаете JQuery переигрывать меня я WLL дать вам помощь

+0

На самом деле я решил сделать эту работу JQuery + Php, и я создавал ее с помощью функции Jquery's Post :), тогда я видел ваше сообщение, делая это на своем локальном хосте :) Я думаю, что jquery - лучший вариант. im gonna поддерживает jquery по функции php. jquery также может предоставить информацию о успехе. – Andrew

+0

выполните jquery + php – sibiraj

2

я имел diffculty в донг это, а так думал я бы разместить мое решение здесь идет ...

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

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

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

content=$(put curl command in here); 

Ps НЕ ЗАБУДЬТЕ слеши„=“или» & 'в ваш URL, это приводит к проблемам если вы пытаетесь получить данные.

0

Вот как вы можете выполнить 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> 

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

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

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

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>"); 
} 
Смежные вопросы