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


HTML/ PHP form , error - Undefined index: action in PHP code

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&#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ý!"; 
        } 
     }   
?>

替换此行:

$action = $_REQUEST['action'];

有了这个:

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

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

发生此错误是因为没有名为"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
        }
?>

您正在尝试访问名为 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ý!"; 
    } 
 }   

?>