Нужна помощь с проверкой уникальности имэйла

Тема в разделе "PHP программирование", создана пользователем Nik Saprano, 2 авг 2006.

Статус темы:
Закрыта.
  1. Nik Saprano

    Nik Saprano Гость

    Вообщем народ, есть следующий код:

    <?
    if(isset($_GET['aff_id'])){
    setcookie("aff_id", (int)$_GET['aff_id'], time()+60*60*24*25 ,"/");
    $aff_id=$_GET['aff_id'];
    }

    if(isset($_COOKIE["aff_id"])){
    $aff_id=$_COOKIE['aff_id'];
    }
    session_start();

    include "affconfig.php";
    include "lang/$language";
    include "countries.php";

    $errorMsg = '';

    if($_POST['commited'] == 'yes')
    {
    // form was sent
    mysql_connect($server, $db_user, $db_pass)
    or die ("Database CONNECT Error (line 8)");

    if($_POST['ausername'] == '')
    $errorMsg .= AFF_SI_UNAMEMISSING.'<br>';

    // check if user doesnt exist already
    $userid = preg_replace('/[^a-zA-Z0-9_]/', '', $_POST['ausername']); // protect against sql injection

    $chk_user = mysql_db_query($database, "select refid from affiliates where refid='$userid'");
    if(mysql_num_rows($chk_user) > 0)
    {
    $errorMsg .= AFF_SI_USEREXISTS.'<br>';
    $_POST['ausername'] = '';
    }

    if($_POST['afirstname'] == '')
    $errorMsg .= AFF_SI_FNAME.'<br>';

    if($_POST['awebsite'] == '')
    $errorMsg .= AFF_SI_WEBSITE.'<br>';


    if($_POST['aemail'] == '')
    $errorMsg .= AFF_SI_EMAILMISSING.'<br>';

    if($_POST['apassword'] == '')
    $errorMsg .= AFF_SI_PWDMISSING.'<br>';

    if($_POST['apassword2'] == '')
    $errorMsg .= AFF_SI_PWDMISSING2.'<br>';

    if($_POST['apassword'] == $_POST['apassword2']){}
    else
    { $errorMsg .= AFF_SI_PWDMISSING3.'<br>';}




    if($errorMsg == '')
    {
    // save and send notification email
    $aemailbody = "Dear ".$_POST['afirstname'].",\n\nThank you for signing up to our affiliate program.\nYour account details are below:\n\n"
    ."Username: ".$_POST['ausername']."\nPassword: ".$_POST['apassword']."\n\n"
    ."You can log into your account and view your 'real-time' statistics by going to:\n"
    ."http://".$domain."\n\n"
    ."Thank you once again, and we wish you luck with your profit making!\n\n\n"
    ."Affiliate Manager\n"
    .$_POST['emailinfo']."\n\n\n\n";

    // mysql_db_query($database, "INSERT INTO affiliates VALUES ('','".$_POST['ausername']."', '".$_POST['apassword']."', '".$_POST['aff_id']."', '".$_POST['acompany']."', '".$_POST['atitle']."', '".$_POST['afirstname']."', '".$_POST['alastname']."', '".$_POST['awebsite']."', '".$_POST['aemail']."', '".$_POST['apayable']."', '".$_POST['astreet']."', '".$_POST['atown']."', '".$_POST['acounty']."', '".$_POST['apostcode']."', '".$_POST['acountry']."', '".$_POST['aphone']."', '".$_POST['afax']."', '".$_POST['adate']."',NOW())")
    mysql_db_query($database, "INSERT INTO affiliates VALUES ('','".$_POST['ausername']."', '".$_POST['apassword']."', '".$_POST['aff_id']."', '".$_POST['acompany']."', '".$_POST['atitle']."', '".$_POST['afirstname']."', '".$_POST['alastname']."', '".$_POST['awebsite']."', '".$_POST['aemail']."', '".$_POST['apayable']."', '".$_POST['astreet']."', '".$_POST['atown']."', '".$_POST['acounty']."', '".$_POST['apostcode']."', '".$_POST['acountry']."', '".$_POST['aphone']."', '".$_POST['afax']."',NOW())")
    or die(mysql_error());

    // $query = "select * from affiliates where refid='".$_POST['ausername']."'";
    // $result = mysql_db_query($database, $query);
    // $id = mysql_fetch_array($result);

    // mysql_db_query($database, "INSERT INTO partners (id,site,number,name,password) VALUES ('','".$_POST['awebsite']."', $id[id], '".$_POST['ausername']."', '".$_POST['apassword']."')")
    // or die(mysql_error());

    include "thankyou.php";

    mail($_POST['aemail'], "Welcome New Affiliate!", $aemailbody, "From:".$emailinfo."\nReply-To:".$emailinfo."\n");
    exit;
    }
    }


    ?>


    Нужно чтобы при регистрации проверялся имэйл на уникальность. Т.е. если такой в базе есть, то выдавать ошибку, если нет - все ок.
    Как это сделать?
     
  2. Andrew Stephanoff

    Andrew Stephanoff Гость

    я бы сделал поле email в таблице уникальным
     
  3. j_man

    j_man Гость

    Выполняешь запрос "SELECT * FROM affiliates WHERE email = " . mysql_escape_string($_POST['aemail']) . ""

    Проверяешь что он тебе вернул (например функцией mysql_num_rows()). Если ничего не вернул, то продолжаешь запихивать данные в базу, иначе выводи свою ошибку...
     
  4. Nik Saprano

    Nik Saprano Гость

    Как пользоваться вот этой функцией
    mysql_num_rows()

    ?
     
  5. j_man

    j_man Гость

    Вообще есть такая штука как мануал (спецификация, справочник)... никогда не слышал ? могу дать ссылку или выслать на e-mail, если сам не найдешь.

    Теперь ответ:

    int mysql_num_rows ( resource result )

    mysql_num_rows() возвращает количество рядов результата запроса. Эта команда работает только с запросами SELECT.

    Например:

    $query = "SELECT * FROM affiliates WHERE email = " . mysql_escape_string($_POST['aemail']) . "";
    $result = mysql_query($query) or die(mysql_error());

    if (!mysql_num_rows($result)) //если количество записей в результате равно нулю
    {
    выводишь там свою ошибку
    }
     
  6. _serg_

    _serg_ Гость

    чел правильно сказал - добавь UNIQUE в определение поля
     
  7. Nik Saprano

    Nik Saprano Гость

    Ок, сейчас попробую.
    ВОт еще вопрос:
    Не подскажите как сделать форму запроса пароля, если юзер забыл (восстановление пароля, чтобы чувак ввел свой и-мэл и ему на него пароль прислали)
     
  8. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    Для: Nik Saprano
    проще тебе скрипт написать, нежеле все рассказывать. Берешь и делаешь: в форме e-mail вводиться (например), а на этот е-mail, если он зареган, приходит пароль.
     
  9. _serg_

    _serg_ Гость

    лучше не хранить у себя пароли - мало ли что
    а по почте отправлять линк на форму для задания нового пароля именно для этого юзера - уникальность передавать через параметр. уникальный ключ должен быть валиден до первого же изменения записи данного пользователя
     
  10. Nik Saprano

    Nik Saprano Гость

    А не могли бы Вы примерный код написать?
     
  11. j_man

    j_man Гость

    Для: Nik Saprano
    Вообще-то мне всегда казалось, что люди сюда делиться опытом заходят, помогать друг другу понять те или иные вещи, решить проблему, а не писать кому-либо скрипт под заказ бесплатно.

    Хочешь написать сам, тебе все подробно обьяснят, помогут понять (если уже не обьяснили). а не хочешь сам, тогда любая работа оплачиваться должна.
     
  12. Nik Saprano

    Nik Saprano Гость

    Не , нет , Вы меня не поняли.
    Я не просил писать скрипт.
    Мне хоть примерно занть с чего начать.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей