Follow along with the video below to see how to install our site as a web app on your home screen.
Бележка: This feature may not be available in some browsers.
Урокът не е активен. Ще бъде видим след проверка от администратор.Wicz каза:Мога да ти предложа моята но за защитата не съм сигорен :Д
Ето го урока http://web-tourist.net/login/login/view.php?st=2679
vnikolov каза:http://web-tourist.net/login/login/view.php?st=2641 - Доста добра, но големичка.
аа ти искаш и рангове мойто нема таквиа екстри...php_mysql каза:vnikolov каза:http://web-tourist.net/login/login/view.php?st=2641 - Доста добра, но големичка.
Нещо такова , обаче само:
register , login , logout , sessi и ранговете да се добавят като в phpBB за да не ги добавям от файловете...![]()
Направих това , което исках. С едно изключение на: Забравена парола.ISO каза:Това е едно сравнително не лошо изпълнение - download.
Използвал съм го в http://ip-me.net .
ЕДИТ: В сайта, кода е леко променен. Добавени са няколко допълнителни полета и потребителското име е заменено с e-mail адреса.
<?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
}
?>
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);
Моя грешка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)).
Не мисля така , защото по - този начин , можеш да смениш паролата и на администратора , ако му знаеш e-mail. Схващаш ли ми идеята сега. А това за регистрацията не ми идва на ум как може да стане с този урок: http://web-tourist.net/login/login/view.php?st=2641relax каза:Еми това не праща ключ за потвърждаване. Не мисля, че е нужно след като той си е забравил паролата. При регистрация може да го направиш да иска потвърждение.
За забравена парола с или без активация все тая...
<?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
}
?>
<?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 да бъде и по - точно как точно да представлява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 } ?>
ето ти и втория...