php电子邮件表单验证码

时间:2015-02-06 13:42:54

标签: php forms email

我正在创建一个订阅页面,我在电子邮件验证方面遇到了一些问题。

现在我有3个文件index.php,send.php和config.php

现在表单的部分看起来像这样; index.php看起来像这样:

      <div id="mc_embed_signup">
           <form action="send.php" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>

              <input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="El. Paštas" required>


              <div style="position: absolute; left: -5000px;"><input type="text" name="b_cdb7b577e41181934ed6a6a44_e65110b38d" value=""></div>

              <!-- <div class="clear"> --><input type="submit" value="SEKITE" name="subscribe" id="mc-embedded-subscribe" class="button"><!-- </div> -->

           </form>
        </div>

它与send.php连接,如下所示:

<?php
include('config.php');

$con = mysql_connect($dhost, $duser, $dpass) or die('neimanoma prisijungti prie db serverio'); 
mysql_select_db($dname) or die('neimanoma prisijungti prie duombazes'); 
mysql_set_charset('utf8',$con);

$val = mysql_query('select 1 from `Prenumeratoriai_2015`');
if($val == FALSE){
  $sql = "CREATE TABLE Prenumeratoriai_2015 (id INT NOT NULL AUTO_INCREMENT,PRIMARY KEY( id ),";
  $sql .= "email VARCHAR(255),";
  $sql .= ")";

  $result = mysql_query ("$sql");
  if(!($result))
     echo "<BR><font color=red>Error; ".mysql_errno()."; error description: </font>".mysql_error();
}
$sql = "INSERT INTO `vilmantasz_stovykla1`.`Prenumeratoriai_2015` (  `email` ) values ( '".$_REQUEST["EMAIL"]."' )";

$result = mysql_query ("$sql");
if(!($result))
   echo "<BR><font color=red>Registracija nesėkminga, bandykite dar karta.</font>";
   header("Location: http://www.noriufotografuotis.com/subscribe/Prenumeracija_sekminga.html");

?> 

我几乎没有问题:

  1. 我不知道如何让send.php检查电子邮件是否格式正确 (因为现在如果你输入test.test,它会将它添加到数据库,我希望它检查条目是否是电子邮件)。

  2. 如何检查电子邮件是否已经在列表中以避免重复?

  3. 按下subscribe(“sekite”)按钮后,它会打开新标签(registracijasekminga.html&lt; - translate“registrationsuccesful.php”) 但是如何在同一个标​​签中打开它?

  4. 如何让它显示电子邮件不正确或已在列表中但不在新页面中但在报名表附近?

2 个答案:

答案 0 :(得分:0)

答案1: - if(filter_var($ _POST [&#39; email&#39;],FILTER_VALIDATE_EMAIL))){insert}

答案2: - 从Prenumeratoriai_2015中选择*,其中包含&#39;%&#34;。$ _ POST [&#39; email&#39;]。&#34;%&#39;。如果您没有为此查询获取行,则可以插入。

答案3: - 删除&#34; target =&#34; _blank&#34;&#34;从表格

答案4: - 使用标题功能在网址中使用额外参数返回同一页面,该标记充当错误标记。

答案 1 :(得分:0)

1)您可以使用str_pos或fliter_validate_email检查电子邮件格式是否正确。

2)

$stt = $conn -> prepare ("SELECT ID from <Table name> where <column_name> = :email");
$stt -> bindValue('email', $_POST["email"]);
$stt -> execute();
$id = $stt -> fetchColumn();
if(empty($id)) {
// No such email exists
} else {
// User has already subscribed
}

3)远程目标=“_空白”。

4)尝试重定向,如:

header('Location: login.php?param=value');

将此添加到login.php

if(isset($_GET["param"])) {
if($_GET["param"] == "requrired_value") {
//Code to inform the user that provided email is incorrect.
}
}