[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с условиями
pultter
Доброго времени суток! я пробую писать скрипт регистрации. он пока находится на стадии развития.
Моя проблема: когда открываю index.php у меня сразу пишет "спасибо за регистрацию!" (ниже два поля для ввода логина и пароля), хотя я еще ничего не ввел. так вот как сделать так, чтобы этот текст появлялся тогда, когда нужно, а не сразу?


код:
PHP
<?php
Error_Reporting
(E_ALL & ~E_NOTICE);

// удаление пробелов в начале и конце строки
$Array[log] =         trim($Array[log]);

// шифрование пароля с помощью md5
$md5_password md5($Array[pswrd]);

// установки для соединения с базой
$host =         "localhost";
$user =         "root";
$pass =         "";
$db_name =         "likser";
$table_name =     "user";

// соединяемся с базой
$link mysql_connect ($host$user$pass);

mysql_select_db ("likser");

$result mysql_query("INSERT into $table_name values ('','".$Array[log]."', '".$md5_password."')");

// выводим результаты
if ($result 0) {
    print 
"<b>Не получилось! Попробуйте еще раз.</b><br>";
} else {
    print 
"<b>Спасибо за регистрацию!</b><br>";
}




Спустя 1 час, 20 минут, 42 секунды (10.04.2009 - 18:18) jetistyum написал(а):
1. советую всегда для разработки испльзовать error_reporting(E_ALL | E_STRICT);


2. откуда у тебя появляется в скрипте $Array ????
PHP
$Array[log] =         trim($Array[log]);


3. попробуй сам логически пройти по своему скрипту. ( так, как это делает php-интерпретатор ) и посмотри что должно получиться.

4. формы регистрации я тут не заметил...

Спустя 1 час, 53 минуты, 8 секунд (10.04.2009 - 20:11) pultter написал(а):
если кому будет нужно - вот форма:
HTML
<html>

<body>
<form action="index.php?registered" method=post>
Логин <input type=text name=Array[log]> <br>
Пароль <input type=password name=Array[pswrd]><br>
<input type=submit value=Зарегистрироваться>
</form>

</body>
</html>



Спустя 23 минуты, 47 секунд (10.04.2009 - 20:35) Viking написал(а):
похоже опять глобалки smile.gif давно не было...
$Array = $_POST["Array"];

Спустя 18 минут, 51 секунда (10.04.2009 - 20:53) jetistyum написал(а):
Елкипалки, ну кто пишет такие книжки, по которым учатся те тысячи людей, которые потом задают вопросы по поводу получения переменных из GET, POST...

и еще... зачем создавать в посте еще массив???
а скрипт работает так, как его написали.
пробует получить переменные... а потом то что получилось записывает в базу данных, функция query выполняется возвращает ссылку на ресурс.. которую ты пытаешься сравнивать с 0 ...ну вот к примеру у тебя не пройдет mysql_query() вернет false при сравнении с int false будет приравнен к 0 ...
0!>0 таким образом срабатывает false условие ....

Спустя 3 дня, 20 часов, 24 минуты, 34 секунды (14.04.2009 - 17:18) pultter написал(а):
всем большое спасибо... исправил ошибку. теперь у меня другая проблема. я проверяю логин на количество символов и на присутствие знаков (типа @#$^&!"№;%:?* и т.д.). так вот, как мне сделать, чтобы если обнаружилась одна из ошибок, то регистрация прекращалась. пока у меня только пишет ошибки и все равно заносит в базу данные.
код:
PHP
<?php
Error_Reporting
(E_ALL & ~E_NOTICE);

if (
count($_POST)>0):

// установки для соединения с базой
$host =         "localhost";
$user =         "root";
$pass =         "";
$db_name =         "likser";
$table_name =     "user";

// проверяем пароли
if ($Array[pswrd]!=$Array[pswrd_repeat]) {
    print 
"Введенные Вами пароли не совпадают!";
}
// проверяем логин на символы
if (preg_match("/^[a-zA-Z0-9]+$^/",$_POST['$Array[log]'])) {
    print 
"Логин должен содержать только буквы английского алфавита и цифры<br>";
}
// проверяем логин на количество символов
if (strlen($_POST['Array[log]']) <=3) {
    print 
"Логин должен быть не менее трех символов!<br>";
}

// убираем лишние пробелы из логина
$Array[log] = trim($Array[log]);
// шифруем пароль с помощью md5
$Array[pswrd] = md5($_POST['Array[pswrd]']);
// соединяемся с базой
$link mysql_connect ($host$user$pass);
// выбираем базу данных
mysql_select_db ("likser");
// производим запрос
$result mysql_query("INSERT into $table_name SET login='".$Array[log]."', password='".$Array[pswrd]."'");

if (
$result == true) {
print 
"<b>Спасибо за регистрацию!</b><br>";
} else {
print 
"<b>Не получилось! Попробуйте еще раз.</b><br>";
}
endif;

HTML
<form action="index.php?registered" method=post>
Логин <input type=text name=Array[log]> <br>
Пароль <input type=password name=Array[pswrd]><br>
Повторите пароль <input type=password name=Array[pswrd_repeat]><br>
<input type=submit value=Зарегистрироваться>
</form>

Спустя 11 минут, 1 секунда (14.04.2009 - 17:29) Kuliev написал(а):
pultter
Вот пример вывод ошибок. Хочу подчеркнуть, что это всего лишь пример, а вариантов масса! Можешь использовать массив и т.д.
PHP
$err "";

if (
strlen($_POST['login']) <=3)
{
   
$err .= "Логин очень короткий";
}

if ( 
$login != $_POST['login'])
{
  
$err .= "Логин не совпадает";
}

if (
$err != "")
{
  
header ("Location: index.php?err");
}
else
{
// Утюжим переменные и записываем в БД

}


Спустя 11 минут, 44 секунды (14.04.2009 - 17:41) pultter написал(а):
работает... только надо теперь ошибки как-то напечатать...

Спустя 4 минуты, 26 секунд (14.04.2009 - 17:45) rolik200 написал(а):
Введи дополнительную переменную которой присваивается значение 1 если выполняется несоответствие , а затем сделай логику на предмет если 0 то делаем запрос в БД , а нет пишем все что накопилось.
Пример:
PHP
$proverka=0;
// проверяем пароли
if ($Array[pswrd]!=$Array[pswrd_repeat]) {
    print 
"Введенные Вами пароли не совпадают!";
$proverka=1;
}
// проверяем логин на символы
if (preg_match("/^[a-zA-Z0-9]+$^/",$_POST['$Array[log]'])) {
    print 
"Логин должен содержать только буквы английского алфавита и цифры<br>";
$proverka=1;
}
// проверяем логин на количество символов
if (strlen($_POST['Array[log]']) <=3) {
    print 
"Логин должен быть не менее трех символов!<br>";
$proverka=1;
}
if (
$proverka!=1)
{
// убираем лишние пробелы из логина
$Array[log] = trim($Array[log]);
// шифруем пароль с помощью md5
$Array[pswrd] = md5($_POST['Array[pswrd]']);
// соединяемся с базой
$link mysql_connect ($host$user$pass);
// выбираем базу данных
mysql_select_db ("likser");
// производим запрос
$result mysql_query("INSERT into $table_name SET login='".$Array[log]."', password='".$Array[pswrd]."'");
}
else
........

Спустя 16 минут, 55 секунд (14.04.2009 - 18:02) Kuliev написал(а):
pultter
А у тебя форма и обработчик в одном файле или разных???

Спустя 7 минут, 16 секунд (14.04.2009 - 18:09) pultter написал(а):
в одном.

Спустя 18 минут, 3 секунды (14.04.2009 - 18:27) Kuliev написал(а):
Цитата (pultter @ 14.04.2009 - 15:09)
в одном.

Разбей на три файла
1 ) тут будет форма
2) коннект к БД
3) обработчик скрипта

Вот код :::
PHP
// index.php
<?
session_start();

for ($i = 0; $i < count ($_SESSION['err']); $i++)
{
    echo $_SESSION['err'][$i]."<br>";
}

echo 
"

<form action=action.php method=post>
Логин <input type=text name=login> <br>
Пароль <input type=password name=pass1><br>
Повторите пароль <input type=password name=pass2><br>
<input type=submit  name=go value=регистрация>"
;




Обработчик
PHP
// action.php
session_start();
include ("connect.php");

if (isset($_POST['go']))
{
 unset($_SESSION['err']);

// проверяем пароли
if ($_POST['pass1'] != $_POST['pass2'])
{
    $_SESSION['err'][] = "Введенные Вами пароли не совпадают!";
}
// проверяем логин на символы
if (preg_match("/^[a-zA-Z0-9]+$^/",$_POST['login'])) 
{
    $_SESSION['err'][] = "Логин должен содержать только буквы английского алфавита и цифры<br>";
}
// проверяем логин на количество символов
if (strlen($_POST['login']) <=3) 
{
    $_SESSION['err'][] = "Логин должен быть не менее трех символов!<br>";
}

// ЕСТЬ ОШИБКИ ОТПРАВЛЯЕМ НА ФОРМУ
if(count($_SESSION['err']) > 0 )

{
    
    header 
("Location: index.php?err");
    die;

}
 
}else{
    
 
// ПИШЕМ В БАЗУУУУУУ   
// убираем лишние пробелы из логина
$login = trim($_POST['login']);

// шифруем пароль с помощью md5
$pass = md5($_POST['pass1']);


}

Спустя 49 минут, 28 секунд (14.04.2009 - 19:17) pultter написал(а):
спасибо:-)

Спустя 57 минут, 20 секунд (14.04.2009 - 20:14) Joker написал(а):
Цитата (jetistyum @ 10.04.2009 - 17:53)
Елкипалки, ну кто пишет такие книжки, по которым учатся те тысячи людей, которые потом задают вопросы по поводу получения переменных из GET, POST...

Довайте, форумом напишем хорошую книгу)

Спустя 2 часа, 51 секунда (14.04.2009 - 22:15) sergeiss написал(а):
Цитата (Joker @ 14.04.2009 - 20:14)
Цитата (jetistyum @ 10.04.2009 - 17:53)
Елкипалки, ну кто пишет такие книжки, по которым учатся те тысячи людей, которые потом задают вопросы по поводу получения переменных из GET, POST...

Довайте, форумом напишем хорошую книгу)

А все равно будут люди, которые "не увидят" то, что написано прямо на виду. И будут задавать эти же вопросы.


_____________
Напишу индусский код. Бесплатно
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.