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

php_mysql

Registered
Може ли някаква система да ми дадете , която да е сигурна да съдържа:
register , login , logout да запаметява сесиите като phpBB форум :)
 
Мога да ти предложа моята но за защитата не съм сигорен :Д

Ето го урока http://web-tourist.net/login/login/view.php?st=2679
 
Wicz каза:
Мога да ти предложа моята но за защитата не съм сигорен :Д

Ето го урока http://web-tourist.net/login/login/view.php?st=2679
Урокът не е активен. Ще бъде видим след проверка от администратор.
 
Пратих ти Лично съобщение виж го
 
http://web-tourist.net/login/login/view.php?st=2641 - Доста добра, но големичка.

http://web-tourist.net/login/login/view.php?st=1218 - По-малка, но също доста добра.

Други:

http://web-tourist.net/login/login/view.php?st=2275
http://web-tourist.net/login/login/view.php?st=707
http://web-tourist.net/login/login/view.php?st=1485
http://web-tourist.net/login/login/view.php?st=802

Късмет :?:
 
vnikolov каза:
http://web-tourist.net/login/login/view.php?st=2641 - Доста добра, но големичка.

Нещо такова , обаче само:
register , login , logout , sessi и ранговете да се добавят като в phpBB за да не ги добавям от файловете... :)
 
php_mysql каза:
vnikolov каза:
http://web-tourist.net/login/login/view.php?st=2641 - Доста добра, но големичка.

Нещо такова , обаче само:
register , login , logout , sessi и ранговете да се добавят като в phpBB за да не ги добавям от файловете... :)
аа ти искаш и рангове мойто нема таквиа екстри...
 
Искаш да свържеш сайта с phpBB или?

http://web-tourist.net/login/login/view.php?st=2167 - Ето интеграция към phpBB :?: Като се регне в форума или през формата ще са в една датабаза ;)
 
Човека иска система за регистрации логин логоут с тези екстри които е написал горе
 
Еми втората която му дадох е с регистрациий, логин логаут и сесий за запаметяване.

Втората има рангове само да махне админ панела като не го иска.
 
Това е едно сравнително не лошо изпълнение - download.
Използвал съм го в http://ip-me.net .

ЕДИТ: В сайта, кода е леко променен. Добавени са няколко допълнителни полета и потребителското име е заменено с e-mail адреса.
 
ISO каза:
Това е едно сравнително не лошо изпълнение - download.
Използвал съм го в http://ip-me.net .

ЕДИТ: В сайта, кода е леко променен. Добавени са няколко допълнителни полета и потребителското име е заменено с e-mail адреса.
Направих това , което исках. С едно изключение на: Забравена парола.
Ако някой може да даде идея как да направя "забравена парола" да праща нова парола на потребителя и код за активиране на новата парола. :) При активирането паролата се сменя... :)
От 8 до 10 знака да генерира паролата.
 
Кода за Забравена парола.
Код:
<?php
if(isset($_POST['submit']) && $_POST['submit'] == "Изпрати")
{
	$userMail = addslashes(htmlspecialchars($_POST['userMail']));
	$checkMail = mysql_query("SELECT * FROM users WHERE email = '".$userMail."'") or die (mysql_error());
	if(mysql_num_rows($checkMail) == 1)
	{
		$getInfo = mysql_fetch_array($checkMail);
		$userName = $getInfo['username'];
		$sendPassword = substr(md5(uniqid(rand(),1)), rand(6,8), 16);
		$newPassword = md5($sendPassword);
		$updatePassword = mysql_query("UPDATE users SET password = '".$newPassword."' WHERE email = '".$userMail."'");
		if($updatePassword){
			header("Content-Type: text/plain; charset=windows-1251");
			$sendText = "Здравейте $userName! \t\n\n\n";
			$sendText .= "Вашата нова парола е: $sendPassword \t\n\n";
			$sendText .= "За да промените паролата, трябва да влезете във вашия акаунт.\nСлед това Профил->Настройки->Смяна парола";
			mail($userMail, 'Нова парола', $sendText, 'From: email');
			
			header("Content-Type: text/html; charset=windows-1251"); 
			echo "На посочения от вас e-mail адрес е изпратена новата Ви парола";
		}
		else{
			die("There is problem with new password updated!");
		}		
	}
	else
	{
		echo "Потребител с такъв e-mail адрес не съществува";
	}
}
else
{
	?>
	<form action="recover.php" method="post">
	E-Mail: <input type="text" name="userMail"> 
	<input type="submit" name="submit" value="Изпрати">
	</form>
	<?php
}
?>

И за активацията
Код:
<?php
if(isset($_POST['submit']) && $_POST['submit'] == "Активирай")
{
	$key = addslashes(htmlspecialchars($_POST['key']));
	$email = addslashes(htmlspecialchars($_POST['email']));
	//присвояваме данните от гет в променвлива

	$selectKey = mysql_query("SELECT * FROM users WHERE email = '".$email."' AND ukey = '".$key."' AND active = '0'");

	if(mysql_num_rows($selectKey) > 0)
	{
		$updatePerm = mysql_query("UPDATE users SET active = '1', ukey = '' WHERE ukey = '".$key."' AND email = '".$email."'");
		echo "Вашия акаунт е активиран!";
	}
	else
	{
		echo "Грешен код или акаунта вече е активиран.";
	}
}
else
{
	?>
	<form action='getkey.php' method='post'>
	E-Mail: <input type='text' name='email'><br />
	Код за активация: <input type='text' name='key'> 
	<input type='submit' name='submit' value='Активирай'>s
	</form>
	<?php
}
?>
 
Код:
rand(6,8), 16);
От 6 до 8 символа? Само не виждам къде праща кода за активация.. :shock:
 
Не от 8 до 10 е. Проследи правилно цялата фунцкия и ще разбереш. И как къде праща на пощата праща сляп ли си или да цитирам

Код:
if($updatePassword){ 
         header("Content-Type: text/plain; charset=windows-1251"); 
         $sendText = "Здравейте $userName! \t\n\n\n"; 
         $sendText .= "Вашата нова парола е: $sendPassword \t\n\n"; 
         $sendText .= "За да промените паролата, трябва да влезете във вашия акаунт.\nСлед това Профил->Настройки->Смяна парола"; 
         mail($userMail, 'Нова парола', $sendText, 'From: email'); 
          
         header("Content-Type: text/html; charset=windows-1251"); 
         echo "На посочения от вас e-mail адрес е изпратена новата Ви парола"; 
      }

Код:
substr(md5(uniqid(rand(),1)), rand(6,8), 16);

Както виждаш този rand(6,8 ) стои там от което число да вземе код. Т.е. ако се падне 6 то тогава кода ще е 10 символа, ако се падне 7 то ще е 9 символа и ако се падне 8 то ще е 8 символа... substr взима част от md5(uniqid(rand(),1)).
 
relax каза:
Не от 8 до 10 е. Проследи правилно цялата фунцкия и ще разбереш. И как къде праща на пощата праща сляп ли си или да цитирам

Код:
if($updatePassword){ 
         header("Content-Type: text/plain; charset=windows-1251"); 
         $sendText = "Здравейте $userName! \t\n\n\n"; 
         $sendText .= "Вашата нова парола е: $sendPassword \t\n\n"; 
         $sendText .= "За да промените паролата, трябва да влезете във вашия акаунт.\nСлед това Профил->Настройки->Смяна парола"; 
         mail($userMail, 'Нова парола', $sendText, 'From: email'); 
          
         header("Content-Type: text/html; charset=windows-1251"); 
         echo "На посочения от вас e-mail адрес е изпратена новата Ви парола"; 
      }

Код:
substr(md5(uniqid(rand(),1)), rand(6,8), 16);

Както виждаш този rand(6,8 ) стои там от което число да вземе код. Т.е. ако се падне 6 то тогава кода ще е 10 символа, ако се падне 7 то ще е 9 символа и ако се падне 8 то ще е 8 символа... substr взима част от md5(uniqid(rand(),1)).
Моя грешка :oops: Колкото до това за новата парола на ли трябва да се активира.. ? Примерно се праща ключ KDbAKbZkADLA;lAD'jLAE1321 и чрез този ключ го въвеждаш или е пратен в самото съобщение като линк за да си активира потребителя новата парола.. :oops:
 
Еми това не праща ключ за потвърждаване. Не мисля, че е нужно след като той си е забравил паролата. При регистрация може да го направиш да иска потвърждение.

За забравена парола с или без активация все тая...
 
relax каза:
Еми това не праща ключ за потвърждаване. Не мисля, че е нужно след като той си е забравил паролата. При регистрация може да го направиш да иска потвърждение.

За забравена парола с или без активация все тая...
Не мисля така , защото по - този начин , можеш да смениш паролата и на администратора , ако му знаеш e-mail. Схващаш ли ми идеята сега. А това за регистрацията не ми идва на ум как може да стане с този урок: http://web-tourist.net/login/login/view.php?st=2641
 
Да, ясно сега ще го направя да се потвърждава...

ЕДИТ:

Код:
<?php
if(isset($_POST['submit']) && $_POST['submit'] == "Изпрати")
{
	$userMail = addslashes(htmlspecialchars($_POST['userMail']));
	$checkMail = mysql_query("SELECT * FROM users WHERE email = '".$userMail."'") or die (mysql_error());
	if(mysql_num_rows($checkMail) == 1)
	{
		$getInfo = mysql_fetch_array($checkMail);
		$userName = $getInfo['username'];
		$sendPassword = substr(md5(uniqid(rand(),1)), rand(6,8), 16);
		$newPassword = md5($sendPassword);
		$keycode = md5(sha1(rand(10000, 99999));
		$updatePassword = mysql_query("UPDATE users SET active = '0', ukey = '".$keycode."' unactivepass = '".$newPassword."' WHERE email = '".$userMail."'");
		if($updatePassword){
			header("Content-Type: text/plain; charset=windows-1251");
			$sendText = "Здравейте $userName! \t\n\n\n";
			$sendText .= "Вашата нова парола е: $sendPassword \t\n";
			$sendText .= "Вашия ключ за потвърждаване: $keycode \t\n\n"
			$sendText .= "За да промените паролата, трябва да влезете във вашия акаунт.\nСлед това Профил->Настройки->Смяна парола";
			mail($userMail, 'Нова парола', $sendText, 'From: email');
			
			header("Content-Type: text/html; charset=windows-1251"); 
			echo "На посочения от вас e-mail адрес е изпратена новата Ви парола и ключ за потвърждаване";
		}
		else{
			die("There is problem with new password updated!");
		}		
	}
	else
	{
		echo "Потребител с такъв e-mail адрес не съществува";
	}
}
else
{
	?>
	<form action="?a=recover" method="post">
	E-Mail: <input type="text" name="userMail"> 
	<input type="submit" name="submit" value="Изпрати">
	</form>
	<?php
}
?>

ЕДИТ2:

Код:
<?php
if(isset($_POST['submit']) && $_POST['submit'] == "Активирай")
{
	$key = addslashes(htmlspecialchars($_POST['key']));
	$email = addslashes(htmlspecialchars($_POST['email']));
	//присвояваме данните от гет в променвлива

	$selectKey = mysql_query("SELECT * FROM users WHERE email = '".$email."' AND ukey = '".$key."' AND active = '0'");
	$getPassword = mysql_fetch_array($selectKey)
	if(mysql_num_rows($selectKey) > 0)
	{
		$updatePerm = mysql_query("UPDATE users SET active = '1', ukey = '', password = '".$getPassword['unactivepass']."', unactivepass = '' WHERE ukey = '".$key."' AND email = '".$email."'");
		echo "Вашия акаунт е активиран!";
	}
	else
	{
		echo "Грешен код или акаунта вече е активиран.";
	}
}
else
{
	?>
	<form action='getkey.php' method='post'>
	E-Mail: <input type='text' name='email'><br />
	Код за активация: <input type='text' name='key'> 
	<input type='submit' name='submit' value='Активирай'>s
	</form>
	<?php
}
?>

ето ти и втория...
 
relax каза:
Да, ясно сега ще го направя да се потвърждава...

ЕДИТ:

Код:
<?php
if(isset($_POST['submit']) && $_POST['submit'] == "Изпрати")
{
	$userMail = addslashes(htmlspecialchars($_POST['userMail']));
	$checkMail = mysql_query("SELECT * FROM users WHERE email = '".$userMail."'") or die (mysql_error());
	if(mysql_num_rows($checkMail) == 1)
	{
		$getInfo = mysql_fetch_array($checkMail);
		$userName = $getInfo['username'];
		$sendPassword = substr(md5(uniqid(rand(),1)), rand(6,8), 16);
		$newPassword = md5($sendPassword);
		$keycode = md5(sha1(rand(10000, 99999));
		$updatePassword = mysql_query("UPDATE users SET active = '0', ukey = '".$keycode."' unactivepass = '".$newPassword."' WHERE email = '".$userMail."'");
		if($updatePassword){
			header("Content-Type: text/plain; charset=windows-1251");
			$sendText = "Здравейте $userName! \t\n\n\n";
			$sendText .= "Вашата нова парола е: $sendPassword \t\n";
			$sendText .= "Вашия ключ за потвърждаване: $keycode \t\n\n"
			$sendText .= "За да промените паролата, трябва да влезете във вашия акаунт.\nСлед това Профил->Настройки->Смяна парола";
			mail($userMail, 'Нова парола', $sendText, 'From: email');
			
			header("Content-Type: text/html; charset=windows-1251"); 
			echo "На посочения от вас e-mail адрес е изпратена новата Ви парола и ключ за потвърждаване";
		}
		else{
			die("There is problem with new password updated!");
		}		
	}
	else
	{
		echo "Потребител с такъв e-mail адрес не съществува";
	}
}
else
{
	?>
	<form action="?a=recover" method="post">
	E-Mail: <input type="text" name="userMail"> 
	<input type="submit" name="submit" value="Изпрати">
	</form>
	<?php
}
?>

ЕДИТ2:

Код:
<?php
if(isset($_POST['submit']) && $_POST['submit'] == "Активирай")
{
	$key = addslashes(htmlspecialchars($_POST['key']));
	$email = addslashes(htmlspecialchars($_POST['email']));
	//присвояваме данните от гет в променвлива

	$selectKey = mysql_query("SELECT * FROM users WHERE email = '".$email."' AND ukey = '".$key."' AND active = '0'");
	$getPassword = mysql_fetch_array($selectKey)
	if(mysql_num_rows($selectKey) > 0)
	{
		$updatePerm = mysql_query("UPDATE users SET active = '1', ukey = '', password = '".$getPassword['unactivepass']."', unactivepass = '' WHERE ukey = '".$key."' AND email = '".$email."'");
		echo "Вашия акаунт е активиран!";
	}
	else
	{
		echo "Грешен код или акаунта вече е активиран.";
	}
}
else
{
	?>
	<form action='getkey.php' method='post'>
	E-Mail: <input type='text' name='email'><br />
	Код за активация: <input type='text' name='key'> 
	<input type='submit' name='submit' value='Активирай'>s
	</form>
	<?php
}
?>

ето ти и втория...
Предполагам че трябва да въведа в таблицата ми `users` някакво поле , ukey или key да бъде и по - точно как точно да представлява :)
 

Back
Горе