0

在尝试自己解决我的问题 2 天后,我放弃了 :( 所以会尝试在这里寻求帮助。我的问题是 xampp 给了我这个错误:

注意:未定义索引:第 78 行 C:\xampp\htdocs\portfolio\index.php 中的名称 注意:未定义索引:第 79 行 C:\xampp\htdocs\portfolio\index.php 中的电子邮件 注意:未定义索引:消息在第 80 行的 C:\xampp\htdocs\portfolio\index.php 注意:未定义的索引:第 84 行的 C:\xampp\htdocs\portfolio\index.php 中的人类 注意:未定义的索引:在 C:\xampp\ 中提交第 88 行的 htdocs\portfolio\index.php

我设法发现我需要在使用它们之前定义变量,或者检查它们是否存在,但是我对 PHP 的了解是非常基础的。有人可以帮我吗?

<section id="contact">
<h3>Contact me :</h3>
<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: Example'; 
    $to = 'example@gmail.com'; 
    $subject = 'Hello';
    $human = $_POST['human'];

    $body = "From: $name\n E-Mail: $email\n Message:\n $message";

    if ($_POST['submit']) {
    if ($name != '' && $email != '') {
        if ($human == '4') {                 
            if (mail ($to, $subject, $body, $from)) { 
            echo '<p>Your message has been sent!</p>';
        } else { 
            echo '<p>Something went wrong, go back and try again!</p>'; 
        } 
    } else if ($_POST['submit'] && $human != '4') {
        echo '<p>You answered the anti-spam question incorrectly!</p>';
    }
    } else {
        echo '<p>You need to fill in all required fields!!</p>';
    }
}
?>

<form method="post" action="index.php">

    <label>Name</label>
    <input name="name" placeholder="Type Here">

    <label>Email</label>
    <input name="email" type="email" placeholder="Type Here">

    <label>Message</label>
    <textarea name="message" placeholder="Type Here"></textarea>
    <label>*What is 2+2? (Anti-spam)</label>
<input name="human" placeholder="Type Here">

    <input id="submit" name="submit" type="submit" value="Submit">

</form>


</section>
4

2 回答 2

0

由于没有POST请求,因此$_POST['name']等变量不可用,因此PHP给出了该错误。您需要做的是检查是否已发出$_POST请求,然后定义变量:

<?php
if(isset($_POST['submit'])){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: Example'; 
    $to = 'example@gmail.com'; 
    $subject = 'Hello';
    $human = $_POST['human'];

    $body = "From: $name\n E-Mail: $email\n Message:\n $message";

    if ($_POST['submit']) {
    if ($name != '' && $email != '') {
        if ($human == '4') {                 
            if (mail ($to, $subject, $body, $from)) { 
            echo '<p>Your message has been sent!</p>';
        } else { 
            echo '<p>Something went wrong, go back and try again!</p>'; 
        } 
    } else if ($_POST['submit'] && $human != '4') {
        echo '<p>You answered the anti-spam question incorrectly!</p>';
    }
    } else {
        echo '<p>You need to fill in all required fields!!</p>';
    }
}
}
?>
于 2013-10-24T13:11:08.807 回答
0

目前,您的页面正在显示这些消息,因为您正在显示所有错误和通知。

如果您在页面顶部包含以下内容,则您将不会看到通知消息:

<?php error_reporting (E_ALL ^ E_NOTICE);  ?>

但是请注意,这只会隐藏消息。它不能解决根本问题。

于 2016-02-10T14:53:34.333 回答