从同一页面上的 php 函数调用表单提交操作不起作用
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/17390488/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Call form submit action from php function on same page doesnt work
提问by deepspace
I have made an email sender but it doesn't work. I think function isn't even called. How it's possible to do this? I don't want form to redirect on the other page.
我已经制作了一个电子邮件发件人,但它不起作用。我认为函数甚至没有被调用。怎么可能做到这一点?我不希望表单在其他页面上重定向。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>Mail Sender by midas</title>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
</head>
<?php
if(isset($_POST['submitfunc'])) {
submitfunc();
}
else
//show form
?>
<body>
<form action="?submitfunc" method="post">
<p>
Wy?lij jako:<br />
<input name="nadawca" type="text" /><br />
<br />
Odbiorca:<br />
<input name="odbiorca" type="text" /><br />
<br />
Temat:<br />
<input name="temat" type="text" /><br />
<br />
Wiadomo?? lub kod HTML:<br />
<textarea name="wiadomosc" style="width: 210px; height: 76px;"></textarea></p>
<p>
<input type="submit" value="Wy?lij" /></p>
<p>
<strong>Autor tej strony nie odpowiada za wiadomo?ci wys?ane za po?rednictwem tego skryptu.</strong></p>
</form>
</body>
<?php
function submitfunc() {
if(isset($_POST['nadawca']) and isset($_POST['odbiorca']) and isset($_POST['wiadomosc']) and isset($_POST['temat'])) {
$to = $_POST['odbiorca'];
$subject = $_POST['temat'];
$message = $_POST['wiadomosc'];
$headers = 'From: ' . $_POST['nadawca'] . "\r\n" .
'Reply-To: ' . $_POST['nadawca'] . "\r\n" .
'X-Mailer: PHP/' . phpversion();
// postawienie @ wylaczy wyswietlanie bledow przez to wyrazenie
$mail_sent = @mail($to, $subject, $message, $headers, '-f ' . $_POST['nadawca']);
echo $mail_sent ? "Mail sent" : "Mail failed";
}
else{
echo "fail";
}
}
?>
</html>
回答by Ipsita Rout
1>Change the value of the action attribute of form tag as "action?submitfunc"
1>将form标签的action属性值改为“action?submitfunc”
2>and check through get value
2>并检查获取值
As follows :
如下 :
if(isset($_GET['action'])=='submitfunc') {
submitfunc();
}else
//show form
?>
<body>
<form action="?action=submitfunc" method="post">
回答by Amir
if(isset($_POST['submit'])) {...
<form action="" method="post">
...
<input type="submit" value="Wy?lij" name="submit"/></p>
...
回答by Rob
In your form use
在您的表单中使用
<input type="hidden" name="submitfunc" value="1" />
回答by Wishnu
There is no element with a name
没有带名字的元素
submitfunc
提交函数
Please try this
请试试这个
if(isset($_POST['nadawca'])) {
submitfunc();
}
回答by echo_Me
it looks like you want call the function when submitting.
看起来您想在提交时调用该函数。
try this
尝试这个
<form action="" method="post">
<p>
Wy?lij jako:<br />
<input name="nadawca" type="text" /><br />
<br />
Odbiorca:<br />
<input name="odbiorca" type="text" /><br />
<br />
Temat:<br />
<input name="temat" type="text" /><br />
<br />
Wiadomo?? lub kod HTML:<br />
<textarea name="wiadomosc" style="width: 210px; height: 76px;"></textarea></p>
<p>
<input type="submit" value="Wy?lij" /></p>
<p>
<strong>Autor tej strony nie odpowiada za wiadomo?ci wys?ane za po?rednictwem tego skryptu.</strong></p>
</form>
and also you dont have to use this function.
而且您也不必使用此功能。
try this
尝试这个
if(isset($_POST['nadawca']) and isset($_POST['odbiorca']) and isset($_POST['wiadomosc']) and isset($_POST['temat'])) {
$to = $_POST['odbiorca'];
$subject = $_POST['temat'];
$message = $_POST['wiadomosc'];
$headers = 'From: ' . $_POST['nadawca'] . "\r\n" .
'Reply-To: ' . $_POST['nadawca'] . "\r\n" .
'X-Mailer: PHP/' . phpversion();
// postawienie @ wylaczy wyswietlanie bledow przez to wyrazenie
$mail_sent = @mail($to, $subject, $message, $headers, '-f ' . $_POST['nadawca']);
echo $mail_sent ? "Mail sent" : "Mail failed";
}
else{
echo "fail";
}