Страница регистрации (формы + msql) что за глюки?

Twister0Fx

Новичок
Добрый день!
ситуация следующая
пишу страницу регистрации, код следующий:

PHP:
<?php
$htmcode =<<<HTML
<html>
	<head>
	<title>Страница регистрации</title>
<link rel="stylesheet" type="text/css" href="style.css" />
	</head>
	<body>
	<form method="post" action="z1.php">

		<p>Username: <input type="text" name="user" class="input" /></p>
		<p>Password: <input type="password" name="passw" class="input"/></p>
		<p>E-mail: <input type="text" name="mail" class="input"/></p>

		<input type="submit" value="Done" name="Done"class="button"/>
		<input type="reset" value="Reset" name="Reset" class="button"/></p>
	</form>
	</body>
	</html>
HTML;

if(!empty ($_POST['Done'])&($_POST['user'])&($_POST['passw']))
{
$user=$_POST['user'];
$passw=$_POST['passw'];
mysql_connect("localhost", "root", "") or die (mysql_error ());
	mysql_select_db("accounts") or die(mysql_error());
	mysql_query("INSERT INTO registration(login,password) VALUES('$user','$passw')") or die(mysql_error());
	mysql_close();
unset($_POST['Done'],$_POST['user'],$_POST['passw']);
echo $htmcode;
echo "Письмо активации придет вам на e-mail";
}
else
{
echo $htmcode;
}
?>
хочу реализовать все на одной странице (форма+проверка+внесение в бд), и возникают постоянно траблы
то все работает нормально, то с 10-го раза выполняется первое условие при введение всех данных
в большинстве случает выполняется все после else,т.е. повтор формы
в чем может быть проблема? в базе тип стоит varchar(100) , сравнение utf8_general_ci
все работало нормально, на след. день начинаю доделывать - не пашет уже!
где стоит !empty, там стояла isset - я думаю empty более предпочтительней
и еще проблема такая, если ввожу буквы, они в бд не заносятся (с цифрами все норм )!
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Это вообще что за трындец? if(!empty ($_POST['Done'])&($_POST['user'])&($_POST['passw']))
 

Twister0Fx

Новичок
проверка условий, если все тип-топ, то заносится в бд (но у меня все нормально в форме, а оно не хочет выполняться)
1. проверка нажата ли клавиша
2. проверка заполнения поля user и passw

!empty - false, если значение перем. равно нулю или пустой строке, либо перем. не объявлена
до этого была isset, но, когда ничего не вводишь в строки - заноситься в бд нулевой результат

а что не нравится?)
 

Фанат

oncle terrible
Команда форума
клавиши у тебя на клавиатуре.
а в форме - кнопка.
проверять кнопку не нужно, если ты проверяешь текстовое поле.
Оператор & делает совсем не то, что ты думаешь.
как пользоваться функциями РНР, написано в мануале. с примерами.
пишешь в браузере php.net/empty и смотришь, можно ли проверять несколько переменных за один вызов

но самый треш у тебя дальше
 

Twister0Fx

Новичок
спс за внимание
код еще сырой конечно.. - я его тестирую с различными вариациями
читал проверку кнопки рекомендуют во избежании некоторых sql атак
php.net/empty смотрел, по поводу нескольких условий там не написано - буду тестировать, отпишу
но почему то работает, то нет
пару дней назад все работало с isset
была только одна проблема - вносились в базу и пустые значения
 

Фанат

oncle terrible
Команда форума
читал проверку кнопки рекомендуют во избежание некоторых sql атак
А где читал?
Скорее всего, ты просто что-то перепутал. Но если так и написано, то автор - идиот.

то работает, то нет - из-за оператора &
не выпендривайся, и пиши AND
только не внутри empty, а снаружи.

а про "избежание некоторых SQL атак" почитай что-нибудь умное.
 

Twister0Fx

Новичок
спс
ты был прав, замена & на and - все работает
только не пойму почему такое отличие в работе & и and
 

Фанат

oncle terrible
Команда форума
а почему его не должно быть?
отличие в работе = и == тебя не смущает?
 
Сверху