2011-02-18 115 views
0

我建立了一個非常簡單的PHP形式,它允許用戶使用下面的PHP代碼發送應用程序時已經存在:PHP:檢查電子郵件運行此代碼

if($_SERVER['REQUEST_METHOD'] == 'POST') 
    { 
     $host = '###'; 
     $username = '###'; 
     $pass = '###'; 

     mysql_connect($host,$username,$pass); 
     mysql_select_db("###"); 

     $status = mysql_real_escape_string($_POST['status']); 
     $firstname = mysql_real_escape_string($_POST['firstname']); 
     $lastname = mysql_real_escape_string($_POST['lastname']); 
     $email  = mysql_real_escape_string($_POST['email']); 
     $url  = mysql_real_escape_string($_POST['url']); 

     $query = "INSERT INTO creathive_applications 
        VALUES (NULL,'$status','$firstname','$lastname','$email','$url')"; 

     $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
    } 

我想要做的是使確保同一個人不使用TWICE,所以如果電子郵件地址已經存在於數據庫中,那麼它會在表單上顯示一條消息,表示「抱歉,看起來你已經應用了」。

下面是HTML表單,我已經添加字段集裏面的信息,所以需要做一個)顯示此消息如果電子郵件退出或顯示成功的消息,然後b)添加#membership形式的網址,視圖跳轉到頁面上以便用戶看到消息。有任何幫助嗎?感謝

<form action="" method="post"> 
          <fieldset id="membershipform"> 
        <div id="error"><p>sorry email in use</p></div> 
<div id="success"><p>Thanks your application has been sent</p></div> 
           <ul class="clearfix"> 
            <li id="li-status"> 
             <span>I am a:</span> 
             <menu> 
              <li><label for="student"><input type="radio" name="status" id="student" checked="checked" value="Graduate" /> Graduate</label></li> 
              <li><label for="student2"><input type="radio" name="status" id="student2" value="Undergraduate" /> Undergraduate</label></li> 
             </menu> 
            </li> 
            <li id="li-firstname"> 
             <label for="firstname">First Name</label> <input name="firstname" type="text" placeholder="First Name" id="firstname" title="First Name" /> 
            </li> 
            <li id="li-lastname"> 
             <label for="lastname">Last Name</label> <input name="lastname" type="text" placeholder="Last Name" id="lastname" title="Last Name" /> 
            </li> 
            <li id="li-email"> 
             <label for="email">Email address</label> <input name="email" type="text" placeholder="Email address" id="email" title="Email address" /> 
            </li> 
            <li id="li-url"> 
             <label for="url">URL</label> <input name="url" type="text" placeholder="URL of something you've made" id="url" title="URL of something you've made" /> 
            </li> 
            <li id="li-buttons"> 
             <input name="submit" type="submit" value="Send Application &#9658;" title="Send Application" /> 
            </li> 
           </ui> 
          </fieldset> 
         </form> 

回答

0

做一個選擇查詢,插入之前驗證有沒有對已經電子郵件中的任何條目:

select from creathive_applications where email = $email 

如果有任何結果回來,然後顯示你的消息,而不是插入的記錄。如果電子郵件已存在,您可以添加javascript onload代碼以將表單移動到#membershipform。

+0

你能表演嗎?我該怎麼做?就像電子郵件存在一樣,然後在窗體上顯示消息,如果沒有,則運行插入。謝謝 – Cameron 2011-02-18 16:59:50

0
  1. 您可以改變表格,使電子郵件ID是主要的,所以它將是唯一的。

  2. 您可以用另一個查詢

    選擇從creathive_applications檢查,其中鄂麥= '$電子郵件'

0

簡單,你必須檢查它agains數據庫。

if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    $host = '###'; 
    $username = '###'; 
    $pass = '###'; 

    mysql_connect($host,$username,$pass); 
    mysql_select_db("###"); 

    $status = mysql_real_escape_string($_POST['status']); 
    $firstname = mysql_real_escape_string($_POST['firstname']); 
    $lastname = mysql_real_escape_string($_POST['lastname']); 
    $email  = mysql_real_escape_string($_POST['email']); 
    $url  = mysql_real_escape_string($_POST['url']); 

    $query_check = "SELECT COUNT(*) as existents FROM creathive_applications .... emailfiel = 'email_entered'"; 
    switch($query_check['existents']){ 
     case 0: 
      //do the insert operation 
      $query = "INSERT INTO creathive_applications VALUES (NULL,'$status','$firstname','$lastname','$email','$url')"; 
      $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
     break; 
      default: 
      echo "no no"; 
    } 
} 
0

檢查$email存在於你的數據庫,如果它不設置$error = 1。然後如果$error = 1,打印該消息。

$emailchk = mysql_query("SELECT * FROM creathive_applications WHERE email = '$email'"); 
if(mysql_num_rows($emailchk) > 0) { 
    $error = 1; 
} 

if isset($error) { 
    echo '<div id="error"><p>sorry email in use</p></div>'; 
} 
0

你可以做這樣的:

PHP代碼:

if($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    $host = '###'; 
    $username = '###'; 
    $pass = '###'; 
    $emailerror = null; 

    mysql_connect($host,$username,$pass); 
    mysql_select_db("###"); 

    $status = mysql_real_escape_string($_POST['status']); 
    $firstname = mysql_real_escape_string($_POST['firstname']); 
    $lastname = mysql_real_escape_string($_POST['lastname']); 
    $email  = mysql_real_escape_string($_POST['email']); 
    $url  = mysql_real_escape_string($_POST['url']); 

    $emailchk = mysql_query("SELECT * FROM creathive_applications WHERE email = '$email'"); 
    if(mysql_num_rows($emailchk) == 0) { 
     $query = "INSERT INTO creathive_applications VALUES (NULL,'$status','$firstname','$lastname','$email','$url')"; 
     $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
    }else{ 
     $emailerror = '<span style="color:rgb(255,0,0)">Email already taken</span>'; 
    } 
} 

HTML (必須是在同一個文件)

<form action="" method="post"> 
          <fieldset id="membershipform"> 
        <div id="error"><p>sorry email in use</p></div> 
<div id="success"><p>Thanks your application has been sent</p></div> 
           <ul class="clearfix"> 
            <li id="li-status"> 
             <span>I am a:</span> 
             <menu> 
              <li><label for="student"><input type="radio" name="status" id="student" checked="checked" value="Graduate" /> Graduate</label></li> 
              <li><label for="student2"><input type="radio" name="status" id="student2" value="Undergraduate" /> Undergraduate</label></li> 
             </menu> 
            </li> 
            <li id="li-firstname"> 
             <label for="firstname">First Name</label> <input name="firstname" type="text" placeholder="First Name" id="firstname" title="First Name" /> 
            </li> 
            <li id="li-lastname"> 
             <label for="lastname">Last Name</label> <input name="lastname" type="text" placeholder="Last Name" id="lastname" title="Last Name" /> 
            </li> 
            <li id="li-email"> 
             <label for="email">Email address</label> <input name="email" type="text" placeholder="Email address" id="email" title="Email address" /> <?php echo $emailerror;?> 
            </li> 
            <li id="li-url"> 
             <label for="url">URL</label> <input name="url" type="text" placeholder="URL of something you've made" id="url" title="URL of something you've made" /> 
            </li> 
            <li id="li-buttons"> 
             <input name="submit" type="submit" value="Send Application &#9658;" title="Send Application" /> 
            </li> 
           </ui> 
          </fieldset> 
         </form>