PHP注意:未定义索引:保存在/HTML/contact.php第87行


PHP Notice: Undefined index: save in /HTML/contact.php on line 87

我完成了一个网站,当我试图移动网站时,重写规则没有按计划工作。现在网站工作,但我的联系方式是唯一不工作的东西。我得到的错误是未识别的索引:保存在contact.php的第87行。它与这行代码有关:

if (isset($_GET['save']) || $_GET['save'] == 'contact') {        
include('contact-form-submit.php');

在迁移之前,整个站点运行良好。

这是联系人表单:

<?php  
                    // check for a successful form post  
                    if (isset($_GET['s'])) echo "<div class='"alert alert-success'">".$_GET['s']."</div>";  
                    // check for a form error  
                    elseif (isset($_GET['e'])) echo "<div class='"alert alert-error'">".$_GET['e']."</div>";  
                    ?>                          
                    <form method="POST action="contact.php">  
                        <input class="input-xlarge" name="contact_name" type="text" placeholder="Naam" <?php if(isset($_GET['contact_name']) && !isset($_GET['s'])) print 'value="'.$_GET['contact_name']. '"'; ?>> <br/>
                        <input class="input-xlarge" name="contact_tel" type="text" placeholder="Telefoonnummer" <?php if(isset($_GET['contact_tel']) && !isset($_GET['s'])) print 'value="'.$_GET['contact_tel']. '"'; ?>><br/>
                        <input class="input-xlarge" name="contact_email" type="text" placeholder="E-mail" <?php if(isset($_GET['contact_email']) && !isset($_GET['s'])) print 'value="'.$_GET['contact_email']. '"'; ?>><br/>
                        <input class="input-xlarge" name="contact_onderwerp" type="text" placeholder="Onderwerp" <?php if(isset($_GET['contact_onderwerp']) && !isset($_GET['s'])) print 'value="'.$_GET['contact_onderwerp']. '"'; ?>><br/>
                        <textarea rows="6" name="contact_message" placeholder="Typ uw vraag" <?php if(isset($_GET['contact_message']) && !isset($_GET['s'])) print 'value="'.$_GET['contact_message']. '"'; ?>></textarea><br/> 
                        <input type="hidden" name="save" value="contact"> 
                        <button type="submit" class="btn">Verstuur</button>                   
                    </form>

三个问题:

1

 if (isset($_GET['save']) || $_GET['save'] == 'contact') {  

isset部分是为了避免PHP通知通过利用短路(所以$_GET['save'] == 'contact'只有评估,如果$_GET['save']确实存在),但是你应该写&&,而不是||

这一定是被你以前的平台上较弱的错误报告设置掩盖了;看起来你已经迁移了网站内容,但没有迁移服务器设置……哦!

2

另一个问题是,你的表单的动作是"POST动作=",因为你忘记了一个"在你的HTML:

<form method="POST action="contact.php">

你应该在你的文本编辑器中打开语法高亮,这样你就可以自己发现这些愚蠢的拼写错误。

3

最后,当您将表单方法固定为POST时,$_GET仍然不会填充您的表单值,因为使用 $_POST代替

以前没有办法这样做,除非您在其他地方有代码自动将$_POST移动到$_GET以在两个表单方法之间进行标准化(我有时这样做)。但是,您还没有向我们展示这个

这是因为您正在使用表单方法作为POST,并试图使用_GET使用$_POST['save']来获取它。因此将if条件改为

if (isset($_POST['save']) && $_POST['save'] == 'contact') {