Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка на правильность ввода
 
 автор: Super[MAN]   (17.06.2008 в 10:38)   письмо автору
 
 

Подскажите как сделать,чтобы внесенные данные оставались в форме после проверки на правильность ввода.

Я делаю так :

if (!ctype_alnum($login) || strlen($login) < 4 || strlen($login) > 16)
{
echo "<font color=red>Логин должен быть 4-16 символов (буквы и цифры).</font><br>";
$error = "yes";
}

elseif (!ctype_alnum($passwd1) || strlen($passwd1) < 6 || strlen($passwd1) > 12)
{
echo "<font color=red>Пароль должен быть 6-12 символов (буквы и цифры).</font><br>";
$error = "yes";
}

elseif ($passwd1 != $passwd2)
{
echo "<font color=red>Пароль и его подтверждение не совпадают!</font><br>";
$error = "yes";
}
//// тут еще всякие проверки и программный код

if ($error == "")
{
///////// опять код
}

else
{
include("inc/registration_form.php");
}
Подскажите как исправить,пожалуйста :)

   
 
 автор: root   (17.06.2008 в 10:56)   письмо автору
 
   для: Super[MAN]   (17.06.2008 в 10:38)
 

<input type="text" name="username" value="<?php echo htmlspecialchars($login)?>" />
//и в начале скрипта $login = '';

   
 
 автор: Super[MAN]   (17.06.2008 в 14:55)   письмо автору
 
   для: root   (17.06.2008 в 10:56)
 

Спасибо! Все зароботало! :)

Но у меня есть еще одна проблема. Она заключается в следующем. При выполнение данного скрипта происходит 2 проверки.

Одна - if ($res = mysql_query("SELECT * FROM users WHERE login='$login' AND passwd1='$passwd1' AND status='admin'"))

Вторая - if ($res2 = mysql_query("SELECT * FROM users WHERE login='$login' AND passwd1='$passwd1' AND status='user'"))
И результат выдается для 2 проверок. Подскажите как переделать чтобы все работало как надо.


<?
session_start();
include("main.php");
include("inc/header.php");

if( (isset($_POST['submit_login'])) && ($_POST['submit_login'] <> "") )
{
$db = @mysql_connect($db_location,$db_user,$db_passwd);
mysql_select_db($db_name, $db);
if (!$db)
{
echo( "<P>В настоящий момент сервер базы данных не доступен,
поэтому корректное отображение страницы невозможно.</P>");
exit();
}

$login = $_POST['login'];
$passwd1 = $_POST['passwd1'];
$_SESSION['login'] = $login;
$_SESSION['passwd1'] = $passwd1;


if( empty($login) )
{
echo "<br><b>Введите пожалуйста Ваш Логин.</b>";
$error="yes";
}

if( empty($passwd1) )
{
echo "<br><b>Введите пожалуйста Ваш Пароль.</b>";
$error="yes";
}

if( $error != "yes")
{
if ($res = mysql_query("SELECT * FROM users WHERE login='$login' AND passwd1='$passwd1' AND status='admin'"))
{
if(mysql_num_rows($res) != 0)
{

echo "<br><b>Вы успешно авторизованы под Логином ".$login."</b>";
echo "<br><b>Вы являетесь администратором этой БД</b><p>";
echo "<Span Class=blue>Зарегистрировать нового пользователя</SPAN>";
include("inc/registration_form.php");
include("inc/logout_form.php");
}

else
{
echo "<br><b>Авторизация не успешна! 1</b> Попробуйте еще раз.";
include("inc/login_form.php");
}
}

if ($res2 = mysql_query("SELECT * FROM users WHERE login='$login' AND passwd1='$passwd1' AND status='user'"))
{
if(mysql_num_rows($res2) != 0)
{

echo "<br><b>Вы успешно авторизованы под Логином ".$login."</b>";
include("inc/user.php");
include("inc/logout_form.php");
}

else
{
echo "<br><b>Авторизация не успешна! 2</b> Попробуйте еще раз.";
include("inc/login_form.php");
}
}
}

else
{
echo "<br><b>Авторизация не успешна! 3</b> Попробуйте еще раз.";
include("inc/login_form.php");
}
}

include("inc/footer.php");
?>

   
 
 автор: Root   (17.06.2008 в 15:12)   письмо автору
 
   для: Super[MAN]   (17.06.2008 в 14:55)
 

1.
SELECT * FROM users WHERE login='$login' AND passwd1='$passwd1';
если всё ОК проверяете статус - юзер или админ.

2. обрабатывайте входящую от пользователя информацию с помощью mysql_escape_string()

P.S.
Используйте тэги для выделения текста: в данном случае code

   
 
 автор: Super[MAN]   (17.06.2008 в 15:22)   письмо автору
 
   для: Root   (17.06.2008 в 15:12)
 

У меня есть и другой вариант,но здесь тот же результат :(
Помогите :)

<?
    session_start
();
    include(
"main.php");
    include(
"inc/header.php");

    if( (isset(
$_POST['submit_login'])) && ($_POST['submit_login'] <> "") )
    {
        
$db = @mysql_connect($db_location,$db_user,$db_passwd);
        
mysql_select_db($db_name$db);
        if (!
$db)
        {
            echo( 
"<P>В настоящий момент сервер базы данных не доступен,
            поэтому корректное отображение страницы невозможно.</P>"
);
            exit();
        }

        
$login $_POST['login'];
        
$passwd1 $_POST['passwd1'];
        
/*$_SESSION['login'] = $login;
        $_SESSION['passwd1'] = $passwd1;*/



        
if( (empty($login)) or (empty($passwd1)) )
        {
            echo 
"<br><b>Введите пожалуйста Ваши Логин и Пароль.</b>";        
            include(
"inc/login_form.php");
            }



        else
        {
            if (
$res mysql_query("SELECT * FROM users WHERE login='$login' AND passwd1='$passwd1'"))
            {
                if(
mysql_num_rows($res) != 0)
                {
                    
$_SESSION['login'] = "$login";
                    
$_SESSION['passwd1'] = "$passwd1";

                    if (
$res1 mysql_query("SELECT * FROM users WHERE login='$login' AND passwd1='$passwd1' status='admin'"))
                    {
                              echo 
"<br><b>Вы успешно авторизованы под Логином ".$login."</b>";
                        echo 
"<br><b>Вы являетесь администратором этой БД</b><p>";
                        echo 
"<Span Class=blue>Зарегистрировать нового пользователя</SPAN>";
                        include(
"inc/registration_form.php");
                        include(
"inc/logout_form.php");
                    }

                    if (
$res1 mysql_query("SELECT * FROM users WHERE login='$login' AND passwd1='$passwd1' status='user'"))
                    {
                              echo 
"<br><b>Вы успешно авторизованы под Логином ".$login."</b>";
                        include(
"inc/user.php");
                    }            
                }
                else
                {
                   echo 
"<br><b>Авторизация не успешна! ggfsddfsf</b> Попробуйте еще раз.";
                include(
"inc/login_form.php");
                }
            }
            else
            {
                   echo 
"<br><b>Авторизация не успешна!</b> Попробуйте еще раз.";
                include(
"inc/login_form.php");
            }
        }
    }
    include(
"inc/footer.php");
?>

   
 
 автор: Root   (17.06.2008 в 15:38)   письмо автору
 
   для: Super[MAN]   (17.06.2008 в 15:22)
 

У меня есть и другой вариант,но здесь тот же результат :(
это какой?
<? 
session_start
(); 
include(
"main.php"); 
include(
"inc/header.php"); 

if( (isset(
$_POST['submit_login'])) && ($_POST['submit_login'] <> "") ) { 
    
$db = @mysql_connect($db_location,$db_user,$db_passwd); 
    
mysql_select_db($db_name$db); 

    
$login $_POST['login']; 
    
$passwd1 $_POST['passwd1']; 

    if( (empty(
$login)) or (empty($passwd1)) ) { 
            echo 
"<br><b>Введите пожалуйста Ваши Логин и Пароль.</b>";         
            include(
"inc/login_form.php"); 
    } else { 
        
$res mysql_query("SELECT * FROM users WHERE login='$login' AND passwd1='$passwd1'")) 
            if(
mysql_num_rows($res) != 0) { 
                    
$_SESSION['login'] = "$login"
                    
$_SESSION['passwd1'] = "$passwd1"

                    
$row mysql_fetch_row($res);
                    
                    if(
$row['status'] == 'admin'){
                    
//handle admin
                    
} else {
                    
//handle user
                    
}
                }
    include(
"inc/footer.php"); 
?>

   
 
 автор: Super[MAN]   (17.06.2008 в 15:43)   письмо автору
 
   для: Root   (17.06.2008 в 15:38)
 

Спасибо!!! А то совсем запутался в своих if-else :)

   
 
 автор: Super[MAN]   (18.06.2008 в 09:10)   письмо автору
 
   для: Super[MAN]   (17.06.2008 в 15:43)
 

Попробовал как вы посоветовали,но скрипт почему то всегда выполняет вот этот кусок:
                else
                { 
                    echo "<br><b>Вы успешно авторизованы под Логином ".$login."</b>";
                    echo "<br><b>Вы являетесь администратором этой БД</b><p>";
                    echo "<Span Class=blue>Зарегистрировать нового пользователя</SPAN>";
                    include("inc/registration_form.php");
                    include("inc/logout_form.php");
                            } 


В независимости от того status user или admin

<?
    session_start
();
    include(
"main.php");
    include(
"inc/header.php");

    if( (isset(
$_POST['submit_login'])) && ($_POST['submit_login'] <> "") )
    {
        
$db = @mysql_connect($db_location,$db_user,$db_passwd);
        
mysql_select_db($db_name$db);
        if (!
$db)
        {
            echo( 
"<P>В настоящий момент сервер базы данных не доступен,
            поэтому корректное отображение страницы невозможно.</P>"
);
            exit();
        }

        
$login $_POST['login'];
        
$passwd1 $_POST['passwd1'];

        if( empty(
$login) )
        {
            echo 
"<br><b>Введите пожалуйста Ваш Логин.</b>";        
            
$error="yes";
            }

        elseif( empty(
$passwd1) )
        {
            echo 
"<br><b>Введите пожалуйста Ваш Пароль.</b>";        
            
$error="yes";
            }



        if( 
$error == "")
        {
            
sql="SELECT * FROM users WHERE login='$login' AND passwd1='$passwd1'";
            
$result=mysql_query($sql) or die("Запрос не успешен");
            
$res=mysql_num_rows($result);

            if (
$res != 0)
            {
                
$_SESSION['login'] = "$login";
                
$_SESSION['passwd1'] = "$passwd1";

                
$row mysql_fetch_row($res); 
                     
                            if(
$row['status'] == "user")
                { 
                    echo 
"<br><b>Вы успешно авторизованы под Логином ".$login."</b>";
                    include(
"inc/user.php");
                }

                else
                { 
                    echo 
"<br><b>Вы успешно авторизованы под Логином ".$login."</b>";
                    echo 
"<br><b>Вы являетесь администратором этой БД</b><p>";
                    echo 
"<Span Class=blue>Зарегистрировать нового пользователя</SPAN>";
                    include(
"inc/registration_form.php");
                    include(
"inc/logout_form.php");
                            } 
                    }

            else
            {
                   echo 
"<br><b>Авторизация не успешна! ggfsddfsf</b> Попробуйте еще раз.";
                include(
"inc/login_form.php");
            }
        }

        else
        {
               echo 
"<br><b>Авторизация не успешна!</b> Попробуйте еще раз.";
            include(
"inc/login_form.php");
        }
    }

    include(
"inc/footer.php");
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования