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

时间:2013-04-24 09:28:50

标签: php

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

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>

2 个答案:

答案 0 :(得分:2)

三个问题:

1

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

isset部分是为了通过利用短路来避免PHP通知(如果$_GET['save'] == 'contact'$_GET['save']中进行了&&仅评估事实存在),但你应该写||,而不是"

这必须被您之前平台上的弱错误报告设置所屏蔽;看起来您已经迁移了网站内容,但没有迁移到服务器设置......哎呀!

2

另一个问题是您的表单操作是“POST action =”,因为您忘记了HTML中的<form method="POST action="contact.php">

POST

你应该在文本编辑器中打开语法高亮显示,这样你就可以自己发现这种愚蠢的错别字。

3

最后,当您将表单方法修改为$_GET时,$_POST仍然不会填充您的表单值,因为 $_POST代替

之前没有办法解决这个问题,除非你在其他地方有代码自动将$_GET移动到{{1}}以在两种表单方法之间进行标准化(我有时这样做)。但是,你没有告诉我们这个。

答案 1 :(得分:0)

这是因为您使用form方法作为POST并尝试使用_GET使用$ _POST ['save']来获取它。所以将你的if条件改为

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