HTML / PHP表单,错误 - 未定义的索引:PHP代码中的操作

时间:2013-10-31 00:20:08

标签: php html forms

PHP代码出错。仍然向我显示此错误“Undefined index:action” 在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&#357; 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ý!"; 
        } 
     }   
?>

4 个答案:

答案 0 :(得分:3)

替换此行:

$action = $_REQUEST['action'];

这一个:

$action = ( array_key_exists( 'action', $_REQUEST) ? $_REQUEST['action'] : "" );

此外,正如其他人所指出的那样,您的表单中没有定义操作变量。我想你试图从<form>标签中捕获action参数,但实际上并没有提交给服务器;它只是告诉浏览器将POST数据发送到何处。因此,请尝试查找$_REQUEST['action']或您表单中实际定义的其他字段之一,而不是查找$_REQUEST['name']

答案 1 :(得分:1)

发生此错误是因为没有名为“action”的表单元素。 如果提交表单,请尝试测试。只需添加一个名称即可提交按钮。

<input type="submit" value="Posla&#357; email" name="send" />

然后测试是否单击以发送表单:

<?php
        if ( !isset( $_POST['send'] ) ) {
            // HTML code to display form
        } else {
            // send the submitted data
        }

?>

答案 2 :(得分:0)

您正在尝试访问名为action的表单元素,但没有这样的元素。如果您正在尝试查看脚本是由GET(呈现表单)还是POST(处理表单),请尝试使用以下内容:

if( $_SERVER['REQUEST_METHOD'] == 'GET' ) )

而不是你当前的两行:

$action = $_REQUEST['action']; 
    if ($action== "")

答案 3 :(得分:0)

内部的动作不会是$ _REQUEST或任何其他变量的值。检查表单是否已提交的正确方法是检查$ _SERVER [“REQUEST_METHOD”]变量。寻找'GET'或'POST'。在您的示例中,您将查找变量“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ý!"; 
    } 
 }   

&GT;