1

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

4 回答 4

4

替换这一行:

$action = $_REQUEST['action'];

有了这个:

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

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

于 2013-10-31T02:26:33.857 回答
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
        }

?>
于 2013-10-31T00:38:22.080 回答
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ý!"; 
    } 
 }   

?>

于 2013-10-31T02:42:04.520 回答
0

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

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

而不是您当前的两行:

$action = $_REQUEST['action']; 
    if ($action== "")
于 2013-10-31T00:27:47.437 回答