2015-02-06 27 views
-2

我創建一個訂閱頁面,我有一些問題的電子郵件驗證。PHP電子郵件的形式驗證碼

現在我有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. 按認購後(「sekite」)按鈕,它會打開新的標籤頁(registracijasekminga.html < - 翻譯「registrationsuccesful.php」) 但如何使其在同一標籤中打開?

  4. 如何使它顯示,電子郵件是不正確或已在列表中沒有新的一頁,但最近的入口形式?

+2

4個問題,*過寬*。 – 2015-02-06 13:43:53

+0

我知道,但至於即時通訊新這裏它很難,我完成我的工作...:/ – 2015-02-06 13:50:31

+0

確實會學習基本的HTML和PHP/SQL的時間。你在下面的答案涵蓋了這一切。 – 2015-02-06 13:52:25

回答

0

答1: - 如果(filter_var($ _ POST [ '電子郵件'],FILTER_VALIDATE_EMAIL))){插入}

答2: - SELECT * FROM Prenumeratoriai_2015其中電子郵件LIKE「%」 $ _POST [ '電子郵件'。「%」。如果你沒有得到這個查詢的行,那麼你可以插入。

答3: - 刪除「目標=」 _空白「」從形式

答4: - 用頭功能回到同一頁面的URL額外的參數,它充當錯誤標誌。

+0

你能告訴我我應該在哪裏添加它到我的代碼? 因爲我試圖以不同的方式添加它,並且它不工作:// – 2015-02-06 14:17:18

+0

@MindaugasAnusauskas,你是否嘗試過Ans 1和3. – 2015-02-07 05:13:44

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'); 

這1添加到login.php中

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

所以我的send.php應該看起來像這樣? s23.postimg.org/lkr19irvv/image.jpg – 2015-02-06 15:36:57

+0

你是新來的PHP和編程嗎?似乎如此。 刪除準備聲明中的「<" and ">」。 檢查$ _POST [「email」]是否與登錄頁面中的輸入字段名稱相對應。 用您需要的代碼替換「//」行。 – 2015-02-06 16:03:38