Хубава система за регистрации и сигурна

Още 3 полета добавяш

active - проверява дали е активен акаунта. Ако има 0 значи не е активен и не допуска потребитела в сайта. Ако е 1(след активация става) тогава го пуска

ukey - съдържа кюча за активация

unactivepass - тука се съдържа пратената парола на пощата след което като се активира акаунта се въвежда на полето password


`active` int(2) NOT NULL,
`ukey` varchar(15) NULL,
`unactivepass` varchar(32) NULL

това е
 
`active` int(2) NOT NULL, - къде по - точно трябва да го ползвам в сайта , за да се ограничи...
Някъде при логин формите , но къде :shock: с една дума да направи проверка да ли е активиран потребителя , ако ми помогнеш и за това , ти фъргам +1 :) (дипче ми помогна и то много !)
 
Във файла за логин. В заявката от където проверяваш данните на потребителите в WHERE обавяш AND active = 1. После проверката трябва да ти е от рода if(mysql_num_rows($query) > 0). И ако тази проверка върне TRUE значи да вкара потребителя в сайта. Ако върне FALSE то тогава инклъд файла където ти е кода за активация.

Дано си ме разбрал ...

Пример:

Код:
$sql = mysql_query("SELECT username, password, active FROM users WHERE username = '".$username."' AND password = '".$password."' AND active = 1");

if(mysql_num_rows($sql) > 0){
        //вкарваш в сайта
}
else{
       require "файла-където-е-кода-за-активация";
}
 
relax каза:
Във файла за логин. В заявката от където проверяваш данните на потребителите в WHERE обавяш AND active = 1. После проверката трябва да ти е от рода if(mysql_num_rows($query) > 0). И ако тази проверка върне TRUE значи да вкара потребителя в сайта. Ако върне FALSE то тогава инклъд файла където ти е кода за активация.

Дано си ме разбрал ...
Не бях сигурен точно къде да направя тази проверка , слагам е тук:

Код:
$query2 = mysql_query("SELECT * FROM `users` WHERE username='$username' AND active = 1");
					$r = mysql_num_rows($query2);

Правилно ли е?
 
Код:
<?php
	$login=(isset($_POST['login']));
		if(@$Login) {
			$username = $_POST['username'];
			$password1 = md5($_POST['password1']);
			$ses = session_id();
			$query = mysql_query("SELECT * FROM `mbg_users` WHERE session='$ses'");
			$red = mysql_num_rows($query);
			if ($red != NULL) {
				header("Location: ../index");
				exit;
				}
				else {
					$query2 = mysql_query("SELECT * FROM `users` WHERE username='$username'");
					$r = mysql_num_rows($query2);
					if ($r != NULL) {
						$query3 = mysql_query("SELECT * FROM `users` WHERE username='$username' AND password='$password1'");
						$r2 = mysql_num_rows($query3);
					if ($r2 != NULL) {
						$query4 = mysql_query("UPDATE `users` SET session='$ses' WHERE username='$username' AND password='$password1' AND active = 1");
						if(mysql_num_rows($sql) > 0){
						echo "Моля почакайте...";
						echo '<meta http-equiv="refresh" content="1;url=../index">';
							}
							else{
								require "getkey.php";
								} 

						}
							}
							else {
								echo "Потребителя не съществува. Моля свържете се с администратора ако смятате ,че това е грешка на системата.";
								}}}
								else {
									echo '';
									?>
Искам да се сложи още една заявка , с която да се проверява паролата и при грешна парола да даде резултат: false или: Грешна потребителска парола да изпише , понеже немога да го оправя точно заявките.. :? Иначе relax получваш си точката , надявам се с тази заявка да помогнеж за да...
 
Код:
<?php
$username = addslashes(htmlspecialchars($_POST['username']));
$password = addslashes(htmlspecialchars($_POST['password']));

if(isset($_POST['submit']))
{
	$select_user = mysql_query("SELECT username, password, active FROM users WHERE username = '".$username."' AND password = '".md5($password)."' AND active = '1'") or die(mysql_error());
	$fetch = mysql_fetch_array($select_user);
	
	$ses = session_id();
    $checkSess = mysql_query("SELECT * FROM `mbg_users` WHERE session='$ses'");
    
	if(mysql_num_rows($checkSess) != NULL)
	{
		header("Location: ../index");
        exit;
	}
	else
	{
		if(mysql_num_rows($select_user) > 0)
		{
			if($fetch['password'] != $password)
			{
				echo "Грешна потребителска парола!";
			}
			else
			{
				header("Location: ../index");
			}
		}
		else
		{
			if($fetch['active'] == 0)
			{
				echo "Акаунта Ви не е активиран!<br /><br />\n";
				require "getkey.php";
			}
		}
	}
}
else
{
	if(isset($_GET['redirect'])){
		$redirect = $_GET['redirect'];
	}
	else{
		$redirect = "index.php";
	}
	header("Location: ".$redirect);
}
?>

Ето моя код за логин, че твоя голяма каша... Поправих го както искаше
 
Не ме логва в системата.
Формата ми е това;
Код:
<form id="form1" name="form1" method="post" >
			<table align="center" id="font2">
					<tr>
						<td align="right">Потребител : </td>
						<td><input name="username" type="text" id="username"></td>
					</tr>
					
					<tr>
						<td align="right">Парола : </td>
						<td><input name="password1" type="password" id="password1"></td>
					</tr>
					
					<tr>
						<td colspan="0" align="center"><input name="Login" type="submit" id="Login" value="Влез"></td>
					</tr>
			</table>
		</form>
Ако може да я добавиш и в горния ти код , ако потребителя не е се е вписал да му изкара формата.
 
Във формата нямаш action='' добави един action който да е равен на логин файла.Т.е. слагаш името на файла :) action="login.php"

Код:
else
{
	if(isset($_GET['redirect'])){
		$redirect = $_GET['redirect'];
	}
	else{
		$redirect = "index.php";
	}
	header("Location: ".$redirect);
}

В тоя else слагаш формата... като махаш тези проверки
 
Ето така съм го направил и ми дава грешка:
Код:
<?php
$username = addslashes(htmlspecialchars($_POST['username']));
$password = addslashes(htmlspecialchars($_POST['password']));

if(isset($_POST['submit']))
{
   $select_user = mysql_query("SELECT username, password, active FROM users WHERE username = '".$username."' AND password = '".md5($password)."' AND active = '1'") or die(mysql_error());
   $fetch = mysql_fetch_array($select_user);
   
   $ses = session_id();
    $checkSess = mysql_query("SELECT * FROM `mbg_users` WHERE session='$ses'");
   
   if(mysql_num_rows($checkSess) != NULL)
   {
      header("Location: ../index");
        exit;
   }
   else
   {
      if(mysql_num_rows($select_user) > 0)
      {
         if($fetch['password'] != $password)
         {
            echo "Грешна потребителска парола!";
         }
         else
         {
            header("Location: ../index");
         }
      }
      else
      {
         if($fetch['active'] == 0)
         {
            echo "Акаунта Ви не е активиран!<br /><br />\n";
            require "getkey.php";
         }
      }
   }
}
?>
<form action="login.php" method="post" >
         <table align="center" id="font2">
               <tr>
                  <td align="right">Потребител : </td>
                  <td><input name="username" type="text" id="username"></td>
               </tr>
               
               <tr>
                  <td align="right">Парола : </td>
                  <td><input name="password1" type="password" id="password1"></td>
               </tr>
               
               <tr>
                  <td colspan="0" align="center"><input name="Login" type="submit" id="Login" value="Влез"></td>
               </tr>
         </table>
      </form>

Notice: Undefined index: username in...\login.php on line 31 Notice: Undefined index: password in ...\login.php on line 32

редове: $username = addslashes(htmlspecialchars($_POST['username']));
$password = addslashes(htmlspecialchars($_POST['password']));
 
Код:
$username = @addslashes(htmlspecialchars($_POST['username'])); 
$password = @addslashes(htmlspecialchars($_POST['password']));

Така ги направи
 
Код:
if($fetch['password'] != $password)

този ред го замени с този

Код:
if($fetch['password'] != md5($password))
 
Промених го с моя код:
Код:
<?php
	$login=(isset($_POST['login']));
		if(@$Login) {
			$username = $_POST['username'];
			$password1 = md5($_POST['password1']);
			$ses = session_id();
			$query = mysql_query("SELECT * FROM `mbg_users` WHERE session='$ses'");
			$red = mysql_num_rows($query);
			if ($red != NULL) {
				header("Location: ../index");
				exit;
				}
				else {
					$query2 = mysql_query("SELECT * FROM `mbg_users` WHERE username='$username'");
					$r = mysql_num_rows($query2);
					
					if ($r != NULL) {
						$query3 = mysql_query("SELECT * FROM `mbg_users` WHERE username='$username' AND password='$password1'");
						$r2 = mysql_num_rows($query3);
						
					if ($r2 != NULL) {
						$query4 = mysql_query("SELECT * FROM `mbg_users` WHERE username='$username' AND active = '1'");
						$r3 = mysql_num_rows($query4);
						
					if ($r3 != NULL) {
						$query5 = mysql_query("UPDATE `mbg_users` SET session='$ses' WHERE username='$username' AND password='$password1' AND active = '1'");
				header("Location: ../index");
						}
						else {
							echo "<center>Грешна потребителска парола за потребител <b>".$username."</b>.<br> Ползвайте <u>забравена парола</u> или се свържете с администратора на сайта ,за да ви даде нова.</center>";
							}
							}
													else {
         if($active == 0)
         {
            echo "Акаунта Ви не е активиран!<br /><br />\n";
            require "getkey.php";
         } 
							}
							}
							else {
								echo "Потребителя не съществува. Моля свържете се с администратора ако смятате ,че това е грешка на системата.";
								}
								}
								}
								else {
									echo '';
									?>
		<form id="form1" name="form1" method="post" >
			<table align="center" id="font2">
					<tr>
						<td align="right">Потребител : </td>
						<td><input name="username" type="text" id="username"></td>
					</tr>
					
					<tr>
						<td align="right">Парола : </td>
						<td><input name="password1" type="password" id="password1"></td>
					</tr>
					
					<tr>
						<td colspan="0" align="center"><input name="Login" type="submit" id="Login" value="Влез"></td>
					</tr>
			</table>
		</form>
		<br>
<?php
	}
	
?>

Обаче ако потребителя не е активен дава следната грешка:

Notice: Undefined variable: active in ....\login.php on line 63 Акаунта Ви не е активиран!

Parse error: syntax error, unexpected T_IF in .......\getkey.php on line 39

63:
Код:
 if($active == 0)
getkey.php
39:
Код:
 if(mysql_num_rows($selectKey) > 0)
 
Аз ти написах кое как да го направиш... оправи го и си готов. Твоя код е пълня каша.
 
relax каза:
Аз ти написах кое как да го направиш... оправи го и си готов. Твоя код е пълня каша.
Не стана , като се пробвам да вляза не ме логва..
 

Back
Горе