Не работает проверка заполнения полей

DimaTiunov

Новичок
В прошлой теме меня критиковали за незнание но всё же напишу
У меня проблема с обработчиком регистрации:
Сам скрипт с формой заполнения данных:
PHP:
<?php
include("config.php");
if($loged=='yes')
{
echo "$lang[registerloged]";
}
else
{
?>
<form action="reg.php" method="post">
<?php echo $lang[username] ?> : <input type="text" name="username"><BR>
<?php echo $lang[password] ?> : <input type="password" name="password"><BR>
<?php echo $lang[passwordagain] ?> : <input type="password" name="password2"><BR>
<?php echo $lang[fname] ?> : <input type="text" name="fname"><BR>
<?php echo $lang[lname] ?> : <input type="text" name="sname"><BR>
<?php echo $lang[email] ?> : <input type="text" name="emaila"><BR>
<?php echo $lang[country] ?> : <input type="text" name="country"><BR>
<?php echo $lang[city] ?> : <input type="text" name="city"><BR>
<?php echo $lang[interests] ?> : <TEXTAREA NAME="interests" COLS="40" ROWS="8">
</TEXTAREA><BR>
<input type="submit" value="<?php echo $lang[registerbutton] ?>">

</form>
<?php

}
?>
Вот обработчик
PHP:
<?
include("config.php");
        $connection = mysql_connect("$server", "$db_user", "$db_pass");
        $db = mysql_select_db("$database", $connection);
        $query = "SELECT * FROM login where username='$username'";
        $result = mysql_query($query, $connection);
	$exuser=mysql_numrows($result);


?>
<?php
if($username=='' OR $password=='' OR $password2=='' OR $fname=='' OR $sname=='' OR $emaila=='' OR $country=='' OR $city=='' OR $interests=='')
{
 echo "$lang[fillfields]";
}
elseif($password!=$password2)
{
echo "$lang[passdontmatch]";
}
elseif($exuser=='1')
{
echo "$lang[usernameregistered]";
}
else
{
include("config.php");
$connection = mysql_connect("$server", "$db_user", "$db_pass");
$db = mysql_select_db("$database", $connection);
$query = "INSERT INTO login (`username`,`password`,`fname`,`sname`,`email`,`country`,`city`,`interests`)".
  "VALUES ('$username', '$password', '$fname','$sname', '$emaila', '$country', '$city',  '$interests')";
$result = mysql_query($query, $connection);

echo "$lang[thanksregister]";

	$ida= uniqid('message');
	$ida2= uniqid('$ida');
	$nr= uniqid($ida);
	$date=date('m.j.Y');

$connection = mysql_connect("$server", "$db_user", "$db_pass");
$db = mysql_select_db("$database", $connection);
$query = "SELECT * FROM usermessages";
$query = "INSERT INTO usermessages (`nomer`, `to`, `from`, `date`, `title`, `message`, `new`) VALUES ('$nr', '$username', 'admin', '$date', '$lang[adminwelcome]', '$lang[adminwelcomemessage]', 'yes')";
$result = mysql_query($query, $connection);
}
?>
При введении данных (причём заполняю все поля) пишет "Заполните все поля !"
ВАЖНАЯ ПОМЕТКА:Скрипт не мой,а скачан vanta.ru/script/info.php?id=962&clas=0,но перевод я делал сам....
 

Фанат

oncle terrible
Команда форума
В общем, как ты уже понял, качество всего этого кода целиком (а не одного только блока проверки введенных значений) - сильно ниже плинтуса.
Судя по всему, большая его часть списана с какого-то онлайн-учебника прошлого века издания.
И надо бы его переписывать целиком.

Конкретно по вопросу заполнения полей тебе ответил Andkorol в прошлой теме, что обращаться надо к массиву $_POST

причем с помощью массива проверять гораздо легче, чем руками.
можно ведь запустить цикл, и проверить все поля, не перечисляя их руками.

PHP:
foreach ($_POST as $field) {
  if (!$field) {
    echo $lang['fillfields'];
    break;
  }
}
Как писал Amdy, нужно различать переменные и строки.
Строки в РНР пишутся в кавычках, переменные - без.

$db_user - переменная.
$lang - тоже.
их надо писать без кавычек.

в переменной $lang['fillfields'] ключ fillfields - это строка. она должна быть написана в кавычках.

но это только надводная часть айсберга твоих ошибок.
по-хорошему, тебе , конечно, еще учиться и учиться. и не один учебник прочитать.
к примеру, про sql-инъекции

тебе надо научиться использовать такую вещь, как автоинкремент в mysql
нужно написать библиотеку для работы с БД, и работать с ней, а не с функциями АПИ БД напрямую

обязательно прочти ответ Amdy и внимательно погугли все незнакомые слова, которые в нем встречаются. что будет непонятно - пиши вопросы здесь.
 

DimaTiunov

Новичок
Фанат
Я попробовал убрать со всех переменных рода $lang кавычки и поставить на строку в внутри прямых скобок.Выдаёт кучу ошибок.Значит надо поменять проверку заполненности строк.....
 

baev

‹°°¬•
Команда форума
Фанат
Я попробовал убрать со всех переменных рода $lang кавычки и поставить на строку в внутри прямых скобок.Выдаёт кучу ошибок.Значит надо поменять проверку заполненности строк.....
— надо пойти почитать хотя бы мануал:
http://www.php.net/manual/ru/language.types.string.php
http://www.php.net/manual/ru/language.types.array.php
 

baev

‹°°¬•
Команда форума
Фанат, Вам не кажется, что Вы напрасно своё время потратили?
 

Фанат

oncle terrible
Команда форума
Нет, не кажется.
Мы все так начинали. Один код, другой...
при этом правильные исправления тоже часто не работают - из за собственной криворукости, но всё же - и хочется поискать что-то другое.
 

DimaTiunov

Новичок
Фанат
Ещё раз повторюсь код скачан из интернета,а не написан мной....
 

WMix

герр M:)ller
Партнер клуба
не порть ничего... пойми что манна небесная уже была послана!
 

Фанат

oncle terrible
Команда форума
DimaTiunov
Я понял, что скачан. Мы тут обычно сообразительные, с первого раза понимаем :)
Мои слова никак этому не противоречат.
Я прекрасно понимаю, что легче заставить работать другой код, чем разобраться с этим.
просто имей в виду, что такая практика очень быстро перестанет работать, и научиться разбираться - а так же изучить язык- все равно придется.
 

DimaTiunov

Новичок
Фанат
Ну я так практикуюсь в пхп,пытаюсь исправлять ошибки,убирать баги,а за одно у учусь синтаксису пхп.Ах да скрипт я по круче нашёл почти адаптировал,и первёл,но этот скрипт не даёт мне спасть =)
Завтра буду побывать делать вывод формы входа(этот скрипт) через "if() else()" у меня была ошибка при выведении если ставить форму входа и мини профиль рядом.....
 

DimaTiunov

Новичок
baev
ну вы наверно начинали когда не такое разнообразие скриптов было(меня на свете не было ещё наверно ) ,а я начал пхп вот недавно (первые 2 недели) когда обилие готовых скриптов зашкаливает ......
 

DimaTiunov

Новичок
Ярослав
Ну во первых я книги по пхп читал и очень много,но оказывается этот скрипт для пхп 4,а не для 5.2.14 версии которая у меня сейчас =(
теперь тему точно можно закрывать.......
 

fixxxer

К.О.
Партнер клуба
Ярослав
Ну во первых я книги по пхп читал и очень много,но оказывается этот скрипт для пхп 4,а не для 5.2.14 версии которая у меня сейчас =(
Вместо ужас-ужас-ужас какой доисторической версии у тебя просто древняя версия, отлично.

Ветка 5.2 уже давно официально не поддерживается, текущая - 5.4, поддерживаемая еще некоторое время - 5.3.
 

DimaTiunov

Новичок
fixxxer
Ты пойми у меня на компе нету PHP,я говорю про хостера,у которого стоит мой сайт...
Кстати надо написать ему чтобы он обновил
 

С.

Продвинутый новичок
Если у тебя дедик, то это твоя работа. А если это шаред, то щаззз, хостер разбежится ради тебя обновит. Будто он не в курсе новых версий и за обратную несовместимость не ему будут мозги компостировать.
 

fixxxer

К.О.
Партнер клуба
Ну вообще-то уже все кроме совсем медленных разбежались и обновили, просто потому что в 5.2 есть незакрытые уязвимости. Кто совсем поумнее, оставили отдельные сервера с 5.2 для старых клиентов у которых все ломается.
 

С.

Продвинутый новичок
Егойный же не обновился. Какова вероятность, что обновится по просьбе одного из?
 
Сверху