我完成了一个网站,当我试图移动网站时,重写规则没有按计划运行。现在网站有效,但我的联系表格是唯一不起作用的。我得到的错误是未识别的索引:保存在第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>
答案 0 :(得分:2)
三个问题:
if (isset($_GET['save']) || $_GET['save'] == 'contact') {
isset
部分是为了通过利用短路来避免PHP通知(如果$_GET['save'] == 'contact'
在$_GET['save']
中进行了&&
仅评估事实存在),但你应该写||
,而不是"
。
这必须被您之前平台上的弱错误报告设置所屏蔽;看起来您已经迁移了网站内容,但没有迁移到服务器设置......哎呀!
另一个问题是您的表单操作是“POST action =”,因为您忘记了HTML中的<form method="POST action="contact.php">
:
POST
你应该在文本编辑器中打开语法高亮显示,这样你就可以自己发现这种愚蠢的错别字。
最后,当您将表单方法修改为$_GET
时,$_POST
仍然不会填充您的表单值,因为 $_POST
代替强>
之前没有办法解决这个问题,除非你在其他地方有代码自动将$_GET
移动到{{1}}以在两种表单方法之间进行标准化(我有时这样做)。但是,你没有告诉我们这个。
答案 1 :(得分:0)
这是因为您使用form方法作为POST并尝试使用_GET使用$ _POST ['save']来获取它。所以将你的if条件改为
if (isset($_POST['save']) && $_POST['save'] == 'contact') {