PHP 代码中的错误。仍然向我显示此错误"未定义的索引:操作"在 PHP 函数中 $action = $_REQUEST['action'];你能帮我找出解决方案吗?
谢谢
完整代码在这里:
<?php
$action = $_REQUEST['action'];
if ($action== "") {
?>
<form action="" method="POST" >
Meno*:<br>
<input name="name" type="text" value="" size="30"/><br>
Email*:<br>
<input name="email" type="text" value="" size="30"/><br>
Vaša otázka*:<br>
<textarea name="message" rows="11" cols="80"></textarea><br>
<input type="submit" value="Poslať email"/>
</form>
<?php
}
else /* send the submitted data */
{
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$message = $_REQUEST['message'];
if ( ($name=="") || ($email=="") || ($message=="") ) {
echo "Všetky políčka je potrebné vyplniť. Napíšte <a href='"'"> otázku </a> ešte raz.";
} else {
$from = "From: $name<$email>'r'nReturn-path: $email";
$subject = "Message sent using your contact form";
mail("27phillip@gmail.com", $subject, $message, $from);
echo "Mail poslaný!";
}
}
?>
替换此行:
$action = $_REQUEST['action'];
有了这个:
$action = ( array_key_exists( 'action', $_REQUEST) ? $_REQUEST['action'] : "" );
此外,正如其他人指出的那样,您的表单中没有定义操作变量。 我认为您正在尝试从<form>
标签中捕获动作参数,但这实际上并未提交到服务器;这只是告诉浏览器将POST
数据发送到哪里。 因此,与其查找$_REQUEST['action']
,不如尝试查找表单中实际定义的$_REQUEST['name']
或其他字段之一。
发生此错误是因为没有名为"action
"的表单元素。尝试测试表单是否已提交。只需添加一个名称以提交按钮。
<input type="submit" value="Poslať email" name="send" />
然后测试是否单击它以发送表单:
<?php
if ( !isset( $_POST['send'] ) ) {
// HTML code to display form
} else {
// send the submitted data
}
?>
您正在尝试访问名为 action 的表单元素,但没有这样的元素。如果您尝试查看脚本是由 GET(以呈现表单)还是 POST(用于处理表单)调用的,请尝试使用类似以下内容:
if( $_SERVER['REQUEST_METHOD'] == 'GET' ) )
而不是您当前的两行:
$action = $_REQUEST['action'];
if ($action== "")
里面的操作不会是 $_REQUEST 或任何其他变量的值。检查表单是否已提交的正确方法是检查 $_SERVER["REQUEST_METHOD"] 变量。查找"获取"或"发布"。在您的示例中,您将查找变量"POST"
<?php
if($_SERVER['REQUEST_METHOD']=="POST"){
//yourhtml
}
else /* send the submitted data */
{
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$message = $_REQUEST['message'];
if ( ($name=="") || ($email=="") || ($message=="") ) {
echo "Všetky políčka je potrebné vyplniť. Napíšte <a href='"'"> otázku </a> ešte raz.";
} else {
$from = "From: $name<$email>'r'nReturn-path: $email";
$subject = "Message sent using your contact form";
mail("27phillip@gmail.com", $subject, $message, $from);
echo "Mail poslaný!";
}
}
?>