2015-02-06 5 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 вопроса в 1, * слишком широкий *. –

+0

Я знаю, но насколько я здесь новый, мне тяжело закончить мою работу ...:/ –

+0

Потратьте время, чтобы изучить базовые HTML и PHP/SQL. У вас есть ответ ниже, который охватывает все это в значительной степени. –

ответ

0

Ans 1: - если (filter_var ($ _POST [ 'электронная почта'], FILTER_VALIDATE_EMAIL))) {вставка}

Ans 2: -. Выберите * из Prenumeratoriai_2015, где электронная почта, как «%» $ _POST [ 'электронная почта']. "%». Если вы не получите строки для этого запроса, вы можете вставить.

Ans 3: - удалить «целевых =» _blank «» из формы

Ans 4: - Использовать заголовок функции, чтобы вернуться к той же странице с дополнительным параметром в URL, который выступает в качестве флага для ошибки ,

+0

Не могли бы вы показать мне, где я должен добавить его в свой код? Потому что я попытался добавить его по-разному, и он не работает: // –

+0

@MindaugasAnusauskas, сделал ли вы попытку для Ans 1 и 3. –

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) Удаленный целевой = "_blank".

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. 
} 
} 
+0

Итак, мой send.php должен выглядеть так? s23.postimg.org/lkr19irvv/image.jpg –

+0

Вы новичок в php и программировании? Кажется, так. Извлеките «<" and ">» в инструкции для подготовки. Проверьте, соответствует ли значение $ _POST ["email"] имени вашего поля ввода на странице входа. Замените строку «//» кодом, который вам нужен. –

Смежные вопросы