2017-02-22 66 views
0

Hy我正在嘗試驗證註冊表單中的電子郵件地址。我想檢查地址是否存在於數據庫中。這是我第一次用PHP,我不知道如何。而且我試圖添加我的代碼和錯誤信息,如果電子郵件中有壞字符。php檢查數據庫中是否有電子郵件

<?php 
 

 

 
$dbhost = "localhost"; 
 
$dbusername = "test"; 
 
$dbpassword = "tester"; 
 
$database_name = "dbtest"; 
 

 

 
$link = mysql_connect("$dbhost", "$dbusername", "$dbpassword"); 
 
if(!$link){ die('Could not connect: ' . mysql_error());} 
 

 
$db_selected = mysql_select_db("$database_name",$link); 
 
if(!$db_selected){ die('Can\'t use foo: ' . mysql_error());} 
 
      
 

 
     $email = strip_tags($_POST['email']); 
 
     $verzija = strip_tags($_POST['mydropdown2']); 
 
     $model = strip_tags($_POST['mydropdown']); 
 
     
 
     $sql = mysql_query("INSERT INTO novice (naslov, podnaslov, vsebina, objavljeno) 
 
          VALUES ('$email', '$verzija', '$model', now()) 
 
          "); 
 

 
if(mysqli_query($link, $sql)){ 
 
    echo "Records added successfully."; 
 
} else{ 
 
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
 
} 
 

 

 

 

 

 
// close connection 
 

 
?>
<form action="insert.php" method="post"> 
 
     <label for="model">Phone model:</label> 
 
     <select required aria-required="true" id="model" name="mydropdown"> 
 
      <option value="">Select...</option> 
 
      <option value="x">x</option> 
 
      <option value="xx">xx</option> 
 
      
 
     </select> 
 
     <label for="version">IOS version:</label> 
 
     <select required aria-required="true" id="version" name="mydropdown2"> 
 
      <option value="">Select...</option> 
 
      <option value="ax">ax</option> 
 
      <option value="bx">bx</option> 
 
      <option value="cx">cx</option> 
 
     </select> 
 
     <p> 
 
      <br> 
 
      <label for="emailAddress">Email Address:</label> 
 
      <input type="text" id="emailAddress" placeholder="Your email..." name="email" required> </p> 
 
     <input type="submit" value="Submit"> </form>

做到這一點。

+0

哪裏是檢查電子郵件帳戶的代碼?我看到插入... – Option

+1

**警告**:使用'mysqli'時,您應該使用[參數化查詢](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **不要**使用手動轉義和字符串插值或串聯來實現此目的,因爲您將創建嚴重的[SQL注入漏洞](http://bobby-tables.com/)。意外地未經轉義的數據是一個嚴重的風險。 – tadman

+0

要檢查電子郵件的有效性(服務器端),你可以像這個官方的php文檔[示例](http://php.net/manual/ro/function.filter-var.php)中使用filter_var。例如:filter_var('[email protected]',FILTER_VALIDATE_EMAIL); –

回答

5

現在您正在嘗試插入並且無法驗證!

使用(使用PDO):

$db = new PDO ("mysql:host=".$hostname.";dbname=".$dbname, $username, $password); 

$query = $db -> prepare ("SELECT * FROM test WHERE email = :email"); 

$query -> execute (array (":email" => $email)); 

$count = $query -> rowCount(); 

if($count > "0") 
{ 
echo "email already exist"; 
} 

而且你可以使用這個:

filter_var($email, FILTER_VALIDATE_EMAIL); 

爲了驗證電子郵件格式。

+0

現在的問題是要在數據庫中發佈文件,我將連接改爲mysli,現在我不知道hot是如何改變post方法 – msoboc4

+0

@ msoboc4我真的不明白你的意思!但是你不需要改變post方法! – Soheyl

+0

我編輯我的代碼,你可以看到上面...現在的問題是我不能添加數據到數據庫,我得到一些錯誤:警告:mysqli_error()期望參數1是mysqli, – msoboc4

相關問題