【问题标题】:PHP - add email into database , send confirmation email and redirectPHP - 将电子邮件添加到数据库中,发送确认电子邮件并重定向
【发布时间】:2014-09-19 02:54:27
【问题描述】:

我是 PHP 的一个完整的初学者,并且在可能非常简单的事情上遇到了一些困难。我的部分网站需要快速电子邮件注册才能访问。

首先我有一个非常简单的表单,下面是 HTML:

<form>
                <div class="row uniform half collapse-at-2">
                    <div class="8u">
                        <input type="text" name="emailaddress" id="email" placeholder="Email Address" />
                    </div>
                    <div class="4u">
                        <input name="Submit" type="submit" form value="Submit" action="postemail.php" method="post">
                    </div>
                </div>
            </form>

所以这只是一个简单的表单,用户可以在其中输入他们的电子邮件地址和提交按钮。我正在尝试将其连接到 postmail.php(我想我搞砸了这部分:&lt;input name="Submit" type="submit" form value="Submit" action="postemail.php" method="post"&gt;

当前它没有连接到 postemail.php 当你按下提交时没有任何反应。

这里是 postmail.php

<?php $connection = mysql_connect("localhost","user","pass"); if (!$connection) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("my_database", $connection);
$sql="INSERT INTO Subscribers (EmailAddress) VALUES ('$_POST[emailaddress]')";
if (!mysql_query($sql,$connection)) { die('Error: ' . mysql_error()); }
mysql_close($connection); 
header('Location: http://www.example.com/STEP1/');?>

所以希望当这个工作正常时,按下提交后,电子邮件地址将存储在数据库中,用户重定向到 example.com/step1

最后,我不知道该怎么做,我希望脚本也向该地址发送一封确认/欢迎电子邮件。我可以使用mail("$_POST[emailaddress]",$subject,$message,"From: $from\n"); 之类的东西来实现这一点吗?

非常感谢您的宝贵时间。

(仅供参考:数据库名为 my_database ,表为订阅者,列为电子邮件地址)

【问题讨论】:

  • 请阅读forminput标签,不要混用
  • 始终阅读文档以了解您使用的方法。不推荐使用 mysql_* 函数。
  • “我认为我把这部分搞砸了” - 确实。这个&lt;input name="Submit" type="submit" form value="Submit" action="postemail.php" method="post"&gt; 应该是&lt;input name="Submit" type="submit" value="Submit"&gt; 然后在上面使用&lt;form action="postemail.php" method="post"&gt;,同时关闭表单标签&lt;/form&gt;
  • 但是,你有很多安全漏洞,比如 SQL 和 XSS 注入,谷歌这些术语。

标签: php forms email


【解决方案1】:

首先更改您的 html 代码

   <form action="postemail.php" method="post">
                 <div class="row uniform half collapse-at-2">
                        <div class="8u">
                            <input type="text" name="emailaddress" id="email" placeholder="Email Address" />
                        </div>
                        <div class="4u">
                            <input name="Submit" type="submit" value="Submit" >
                        </div>
                    </div>
                </form>

然后更改您的 postemail.php

<?php 

$connection = mysql_connect("localhost","user","pass"); 
if (!$connection) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("my_database");
$sql="INSERT INTO Subscribers (EmailAddress) VALUES ('$_POST[emailaddress]')";
mysql_query($sql);
if(mysql_affected_rows()>0)
{
header('Location: http://www.example.com/STEP1/');
}
else{
      echo "fail";
}

?>

【讨论】:

  • 感谢@Lokesh Jain!第一个更改是完美的——现在是连接到 postmail.php 的表单。只是第二部分仍然无法正常工作 - 不断出现“失败”的空白页面在我的管理员的 php 中一切看起来都很好,所以不要认为它在数据库中是一个问题。你有什么想法?谢谢!
  • 您是否在mysql_connect 中添加了数据库用户名和密码,并在mysql_select_db 中添加了数据库名称?
  • 现在可以工作了 - 刚刚删除了数据库并重新创建了它,这似乎解决了问题。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
相关资源
最近更新 更多