在EC2上为S3托管网站运行PHP联系表单

时间:2015-07-27 07:17:10

标签: php mysql amazon-web-services amazon-ec2 amazon-s3

我是一名相当新手级的程序员,所以请原谅以下任何(非常)平庸的错误。

我目前正在创建一个由Amazon S3托管的几个HTML5 / CSS3网页的个人品牌网站,其中包括一个联系页面。我的联系表单目前指向一个(亚马逊Linux)EC2实例上的PHP页面,我已按照AWS's guide和一些(有趣的)试错法设置为LAMP服务器。我的目的是让这个PHP表单将联系人输入的任何信息拼接到作为单独(基于AWS的)RDS实例托管的MySQL数据库中。

虽然我知道有更简单的方法(邮件行动等),但我一直在尽我最大努力让它发挥作用,但似乎无法弄清楚我做错了什么。我的表单将完全正确地重定向到PHP页面,但不会发生返回,也不会将数据放入数据库。基本上,我只是得到一个平坦的白页。

我是否必须在与PHP重定向相同的LAMP服务器上设置数据库,或者我的代码中是否存在完全不可思议的内容?

我已经在下面发布了我的PHP代码以及联系页面的HTML表单。任何帮助将不胜感激!非常感谢你!

PHP代码(contact.php):

<?php

$link = mysql_connect("[Instance Public IP]:[Port #]", "[Username]", "[Password]", "[Database Name]")

if($link === false) {
    die("ERROR: Could not connect." . mysqli_connect_error());
}

$contact_name = mysqli_real_escape_string($link, $_POST['Name']);
$contact_email = mysqli_real_escape_string($link, $_POST['E-Mail']);
$subject = mysqli_real_escape_string($link, $_POST['Subject']);
$message = mysqli_real_escape_string($link, $_POST['Message']);

$sql = "INSERT INTO contacts (contact_name, contact_email, subject, message) VALUES ('$contact_name','$contact_email', '$subject', '$message')";
if(mysqli_query($link, $sql)){
    echo "Thank you! Your message has been sent successfully.";
} else{
    echo "ERROR: Unable to send successfully." .
    mysqli_error($link);
}

mysqli_close($link);
?>

HTML代码(contact.html):

            <form action="[contact.php URL]" method="post">
            <div>
                <label for="Name"><b>Name:</b></label>
                <input type="text" id="Name" autofocus required />
            </div>
            <div>
                <label for="E-Mail"><b>E-Mail:</b></label>
                <input type="email" id="E-Mail" required />
            </div>
            <div>
                <label for="Subject"><b>Subject:</b></label>
                <input type="text" id="Subject" required />
            </div>
            <div>
                <label for="Message"><b>Message:</b></label>
                <textarea id="Message" required>Please write your inquiry here.</textarea>
            </div>
            <div>
                <button type="submit">Submit</button>
            </div>
            <div>
                <button type="reset">Reset</button>
            </div>
        </form>

我已使用必要的用户名,密码等替换了我的生产代码中的所有[通用标签]。

1 个答案:

答案 0 :(得分:0)

所以错误是:

  • 语法错误
  • 在php中发布表单需要HTML输入名称属性

一些建议:

  • 使用可以自动检测语法错误的IDE。
  • 开始学习var_dump
  • 等简单的调试技巧
  • 潜入xdebug

快乐编码:)