0

我完成了一个网站,当我尝试移动网站时,重写规则没有按计划工作。现在该网站可以正常工作,但我的联系表格是唯一不起作用的。我得到的错误是 unidentified index:save in contact.php on line 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>
4

2 回答 2

2

三个问题:

1

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

isset部分是为了通过利用短路来避免 PHP 通知(因此仅在确实存在时才评估),但$_GET['save'] == 'contact'应该编写而不是.$_GET['save']&&||

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

2

另一个问题是您的表单操作是“POST action=”,因为您"在 HTML 中忘记了 a:

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

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

3

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

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

于 2013-04-24T09:30:57.907 回答
0

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

if (isset($_POST['save']) && $_POST['save'] == 'contact') {  
于 2013-04-24T09:30:36.690 回答