логин система

obqvi_in

Registered
Трябва ми проста логин система намерих една в web-tourist, но тя беше без база данни. След това намерих една в VideoTutorials-bg.com ето го и кода:
PHP:
<html> 
<head> 
<title>Регистрация</title> 
</head> 
<body> 

<?php

if(isset($_POST['reg']))
{
 $name = addslashes($_POST['username']);
 $pass1 = addslashes($_POST['pass1']);
 $pass2 = addslashes($_POST['pass2']);
 $email = addslashes($_POST['email']);
 
 if(strlen($name) > 4)
    {
     $q = mysql_query("SELECT username FROM `users` WHERE username='$name'LIMIT 1");
	  if(mysql_num_rows($q) > 0)
	    {
		  $error = "Заето потребирютелско име";
		}
		else
		{
		  if(strlen($pass1) >= 6)
		    {
			  if($pass1 == $pass2)
			    {
				  if (!preg_match('/[a-z0-9_\.]+@[a-z0-9]+\.[a-z]{2,4}$/', $email))
				    {
				       $error = "Невалиден имейл";
				    }
					else
					{
					  $newPass = md5($pass1);
					 $query = "INSERT INTO users SET username='$name',password='$newPass', emal='$email'";
					 mysql_query($query) or die(mysql_error());
					}

				}
				else
				{
				 $error = "Паролите нe съвпадат";
				}
			}
		}
    }
else
    {
	$error = "Кратко име";
	}
}
?>

<form method="post" action=""> 

Име: <input type="text" name="username" /><br />

Парола: <input type="password" name="pass1" /><br />

Отново: <input type="password" name="pass2" /><br />

Имейл: <input type="text" name="email" /><br />

<input type="submit" value="Регистрирай се" name="reg" /> 
</form> 
</body> 
</html>

Като попълня полетата ми дава следната грешка:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\TUK\xampp\htdocs\register.php on line 19
No database selected
 
Не си избрал база данни

трябва да се свържеш

PHP:
$host = "хоста ти";
$user = "потребителско име";
$password = "парола";
$db = "името на бд";
$connect = mysql_connect($host, $user, $password);
mysql_select_db($db, $connect) or die (mysql_error());
 
Сигурен ли си, че правилно си се свързал с MYSQL? :) Дава, че няма връзка базата данни. :)

Кода ти за връзка е:

<?php
$host = "localhost"; // по подразбиране е localhost
$user = "root"; // по подразбиране е root
$password = ""; // тука попълваш в случай, че си задал някаква парола
$db = "името_на_базата_данни"; // създава се от началната страница в localhost/phpmyadmin
$connect = mysql_connect($host, $user, $password);
mysql_select_db($db, $connect) or die (mysql_error());
?>
 
трябваше да променя главна таблица в локалхост на "users" иначе ми показваше че "не е открита база данни" аз имам два сайта и на другия ми намира подтаблицата не знам защо. Как да направя проверките ми за потребител, пароли и имейл да бъдат всяко едно по по отделно.
 
PHP:
<html> 
<head> 
<title>Регистрация</title> 
</head> 
<body> 

<?php

if(isset($_POST['reg']))
{
 $name = htmlspecialchars(addslashes($_POST['username']));
 $pass1 = htmlspecialchars(addslashes($_POST['pass1']));
 $pass2 = htmlspecialchars(addslashes($_POST['pass2']));
 $email = htmlspecialchars(addslashes($_POST['email']));
 $errors = 0;
if(strlen($name) > 4)
    {
     $q = mysql_query("SELECT username FROM `users` WHERE username='$name'LIMIT 1");
     if(mysql_num_rows($q) > 0)
{
$error = "Заето потребирютелско име";
$errors = 1;
}         
}
else
{
        $error = "Кратко име";
		$errors = 1;
}
 if(strlen($pass1) >= 6)
{
 if($pass1 != $pass2)
 {
 $error = "Паролите нe съвпадат";
 $errors = 1;
 }
                               
}
else {
$error "Парола мин 6 символа";
$errors = 1;
}
if (!preg_match('/[a-z0-9_\.]+@[a-z0-9]+\.[a-z]{2,4}$/', $email))
{
$error = "Невалиден имейл";
$errors = 1;
}

if ($errors == 0) {
 $newPass = md5($pass1);
 $query = "INSERT INTO users SET username='$name',password='$newPass', emal='$email'";
  mysql_query($query) or die(mysql_error());
}                                                                   
}
?>

<form method="post" action=""> 

Име: <input type="text" name="username" /><br />

Парола: <input type="password" name="pass1" /><br />

Отново: <input type="password" name="pass2" /><br />

Имейл: <input type="text" name="email" /><br />

<input type="submit" value="Регистрирай се" name="reg" /> 
</form> 
</body> 
</html>


така ?Не съм го тествал
 
PHP:
  if ((empty($name)) || ((strlen($name) < 5) || (strlen($name) > 20 )))
	    {
         die("Не е въведено име или е кратко");
        }
     if(($pass1 != $pass2) || (strlen($pass1) < 6) || (strlen($pass2) < 6))
	    {
	     die("Паролите не съвпадат или са кратки");
		}
     if (!preg_match('/[a-z0-9_\.]+@[a-z0-9]+\.[a-z]{2,4}$/', $email))
	    {
		 die("Невалиден имейл адрес");
		}
        
	}

Аз направих това малко е елементарно но ми върви работа само остана на кеширам паролите, но искам като се попълват полетата например пишеш потребител да се проверява на момента и да излиза от дясно на полето "името е заето" или ако е много сложно това да не е веднага а накрая пак от дясно. Тоест самата грешка да се показва на обърканото поле.
 
Не знам как се работи с него, дай ми пример за това, което искам да направя разбира се ако не е много сложно за мен понеже имам малки познания.
 
PHP:
<html> 
<head> 
<title>Регистрация</title>
<script src="jquery-1.3.1.js" type="text/javascript"></script>
<script>
  $(document).ready(function(){
        $("#userResult").hider();
	    $("#username").blur(function(){
	        $.post("check.php" ,
			    {
		         username : $("#username").val()
		        }, function(response)
		        {
		         $("#userResult").fadeOut("show");
				 $("#userResult").html(response);
				 $("#userResult").fadeIn("show");		
		        }
			);
	    };
    });
</script>	
</head> 
<body> 

<?php

$host = "localhost";
$user = "root";
$pass = "***";
$bd = "users";

$connect = mysql_connect($host, $user, $pass);
mysql_select_db($bd, $connect) or die (mysql_error());


if(isset($_POST['reg']))
{
 $name = addslashes($_POST['username']);
 $pass1 = addslashes($_POST['pass1']);
 $pass2 = addslashes($_POST['pass2']);
 $email = addslashes($_POST['email']);
}
?>

<form method="post" action=""> 

Име: <input type="text" name="username" id="username" /><span id="userResult"></span><br />

Парола: <input type="password" name="pass1" /><br />

Отново: <input type="password" name="pass2" /><br />

Имейл: <input type="text" name="email" /><br />

<input type="submit" value="Регистрирай се" name="reg" /> 
</form> 
</body> 
</html>
Тук съм махнал проверките за да не стажа кода по дълаг.
В файла "check.php" e
PHP:
<?php
      print "Проверка";
?>
Само за проверка, но не ми изкарва като напиша нещо в полето username
и кликна някъде другаде
 
В този същия сайт от където си видял урока има и урок за това и много елементарно :) http://www.videotutorials-bg.com/lessons.php?action=search&id=&t=436
 
Еми аз от там го написах :) ни не ми се показва "проверката" от check.php
и не знам къде бъркам всичко направих по урока, но нещо изпускам и не знам какво. Десет пъти гледах кода и знам че ви тормозя всички с това, но пък нали за това е форума да има такива като мен(не знаещи) и като вас.
 
<script src="jquery-1.3.1.js" type="text/javascript"></script>
<script>
$(document).ready(function(){
$("#userResult").hider(); hide ??!?!?
$("#username").blur(function(){
$.post("check.php" ,
{
username : $("#username").val()
}, function(response)
{
$("#userResult").fadeOut("show"); slow?
$("#userResult").html(response);
$("#userResult").fadeIn("show"); slow???
}
);
};
});
</script>
 
Намерих урок: http://web-tourist.net/login/login/view.php?st=3051 от web-tourist, с който го направих сега ми искаше и да пише пак отдясно и ако паролите не съвпадаха, но ще ми стане прекалено много. мисля да приключа с темата че ви изтормозих после ще рева на кой да дам +1 и Благодаря на всички.
 

Горе