Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проверка на наличие юзера


Автор: SaFaT 17.9.2005, 12:40
Кароче я вот начинающий PHP программист!
Написал небольшой код регестрации! У меня теперь появилась проблема!
Я незнаю как сделать так чтобы нельзя было регать один и тот же ник повторно!
Кароче ща всё обьясню как работает он:
Код

    <form action="login.php" method="post">
    <div align="left">
    <table width="220" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td width="220" height="18" valign="top"><font color="#FFFFFF">Login</font></td>
    </tr>
    <tr>
    <td height="22" valign="top"><font color="#FFFFFF"><input name="login" style="color: #FFFFFF; background-color: #58503E" type="text" id="login"></font></td>
    </tr>
    <tr>
    <td height="21" valign="top"><font color="#FFFFFF">Password</font></td>
    </tr>
    <tr>
    <td height="24" valign="top"><font color="#FFFFFF">
    <input name="pass" type="password" id="pass" style="color: #FFFFFF; background-color: #58503E" size="20" tabindex="1">
    </font></td>
    </tr>
    </table>
    <input type="submit" name="Submit" value="Авторизация" style="color: #FFFFFF; background-color: #58503E"></div>
    <p align="left"><font color="#FFFFFF"><span lang="ru"><a href="reg.php">
    <font color="#AEAEFF">Регестрация</font></a></span></font></p>
    </form>

Извеняюсь что так нагромождённо я просто вырываю из своих страничек!
Так вот это форма в входа которая отправляет данные в login.php но вопрос не в том!
Вот сам код страници регестрации:
Код

<?php
if(isset($_POST['submit']))
{
    $string=$_POST['name']."::".$_POST['pass']."::"."\r\n"; // implode обозначает то, что мы собираем массив в строку, разделяя каждое значение запятой.
    $fopen=fopen("data.txt", "a+");
    fwrite($fopen, $string);
    fclose($fopen);
    echo "Вы зарегестрированы";
}
?>
<body bgcolor="#58503E">

<form action="reg.php" method="post">
    <p align="left"><font color="#FFFFFF">Регестрация
    </font>
    </p>
    <table border="1" width="100%" id="table1" style="border-width: 0px">
        <tr>
            <td style="border-style:none; border-width:medium; " width="80">
            <font color="#FFFFFF">Логин</font></td>
            <td style="border-style:none; border-width:medium; ">
    <font color="#FFFFFF">
    <input type="text" style="color: #FFFFFF; background-color: #58503E" name="name"></font></td>
        </tr>
        <tr>
            <td style="border-style: none; border-width: medium" width="81">
            <font color="#FFFFFF">Пароль</font></td>
            <td style="border-style: none; border-width: medium">
    <font color="#FFFFFF">
    <input type="text" style="color: #FFFFFF; background-color: #58503E" name="pass"></font></td>
        </tr>
    </table>
    <font color="#FFFFFF">
    <input type="submit" name="submit" style="color: #FFFFFF; background-color: #58503E">
</font>
</p>
</form>

В этом файле все данные обрабатываються и записываються таким образом:
admin::pass::
admin2::pass2::
А сама проблема в том как сделать так чтобы нельзя было регить адно и тоже имя много раз?

Автор: PARROT 17.9.2005, 14:04
Код

<?php
if(isset($_POST['submit']))
{
if(!ereg("^[a-z0-9]+$", $login)){
        $error="Ошибка: Вы ввели недопустимое имя пользователя!<br>";
        }
    if(!ereg("^[a-z0-9]+$", $passw1)){
        $error.="Ошибка: Вы ввели недопустимый пароль!<br>";
        }
    if($passw1!==$passw2){
        $error.="Введите пароль правильно!";
        }

if(!$error){
    $data=file("data.txt");
    foreach ($data as $us){
    list($pass, $log)=split("\t", $us);
    if($log==$login){
        $er="Этот логин занят!!!";
        }
    
    }
    if(!$er){
    $dat=fopen("data.txt", "a");
    fwrite($dat, "$passw1\t$login\n");
    fclose($dat);
    }
    
}
else
{echo"$error";}
}
?>
}
?>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)