<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум PHP-MyAdmin.RU &mdash; PHP код для небольшой админки. Ошибка.]]></title>
	<link rel="self" href="https://forum.php-myadmin.ru/extern.php?action=feed&amp;tid=2140&amp;type=atom" />
	<updated>2011-05-05T15:07:46Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.php-myadmin.ru/viewtopic.php?id=2140</id>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16194#p16194" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>А в чем смысл этого хэша?</p></blockquote></div><p>Перехват хеша не означает перехвата пароля. При одной учетной записи, это, конечно, не столь существенно.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-05-05T15:07:46Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16194#p16194</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16193#p16193" />
			<content type="html"><![CDATA[<p>А в чем смысл этого хэша? Это что-то типа кодирования? Какая разница. что будет - пароль или хеш? У меня только 1 учетная запись. Я с таким же успехом могу создать 32-значный пароль.</p>]]></content>
			<author>
				<name><![CDATA[Ketsyki]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3147</uri>
			</author>
			<updated>2011-05-05T14:07:33Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16193#p16193</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16191#p16191" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>Ну, это вместо капчи. Что б брутфорсом было труднее взломать</p></blockquote></div><p>Это лишнее. Авторизация делается обычно несколько иным образом, через необращаемую кодировку пароля функцией хеширования.</p><p>В БД пишем не сам пароль, а его хеш. MD5 хеш - это строка из 32 символов, которая генерируется из любой строки.<br />$password = md5(&#039;пароль&#039;);</p><p>При сверке паролей, необходимо сравнивать их хеш, то есть хеш из БД и хеш из полученной строки пароля.<br />if ( $_POST[&#039;login&#039;] == &quot;admin&quot; &amp;&amp; md5($_POST[&#039;pass&#039;]) == $password ) {</p><p>В кукисы тоже отправляем хеш, а не читаемый пароль.</p><p>А от подбора пароля методом перебора есть только один действенный способ блокировки - это таймер на авторизацию. При таймере в 10 секунд, в течении которых пользователю с одного IP нельзя авторизоваться снова, метод перебора не работает абсолютно никак, потому что продлится тысячи лет. Так что лучше продумайте такой механизм защиты для своей авторизации.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-05-04T21:40:29Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16191#p16191</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16187#p16187" />
			<content type="html"><![CDATA[<p>Ну, это вместо капчи. Что б брутфорсом было труднее взломать</p>]]></content>
			<author>
				<name><![CDATA[Ketsyki]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3147</uri>
			</author>
			<updated>2011-05-04T18:22:40Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16187#p16187</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16185#p16185" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>Если удалить проверку суммы чисел и все, что с ними связано, то все нормально</p></blockquote></div><p>Я не понял зачем вы эту проверку сделали, учитывая, что работать она никак не может, ведь при каждом запуске скрипта значения функции rand() будут разные.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-05-04T17:41:58Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16185#p16185</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16182#p16182" />
			<content type="html"><![CDATA[<p>Здравствуйте. Маленькая проблемка.<br /></p><div class="codebox"><pre><code>&lt;?php session_start();
//Коннектися к бд
$hostname = &quot;localhost&quot;; 
$username = &quot;myusername&quot;; 
$password = &quot;mypassword&quot;;

mysql_connect($hostname,$username,$password) OR DIE(&quot;Не могу создать соединение &quot;); 
mysql_query(&#039;SET NAMES cp1251&#039;);
/* выбрать базу данных. Если произойдет ошибка - вывести ее */ 
mysql_select_db(baza) or die(mysql_error());  

$login = &#039;admin&#039;;
$query = &quot;SELECT `password` FROM `users` WHERE `login` = &#039;$login&#039;&quot;;
$result = mysql_query($query); 
$row = mysql_fetch_assoc($result); 
$password = $row[&#039;password&#039;]; //Выбираем password ил БД

mysql_close(); 
//Вводим случайные переменные и находим их сумму
$a=rand(1,20);
$b=rand(1,20);
$sum=$a+$b;
//Если пароль, логин и сумма цифр совапил, то отправляем логин и пароль в кукисы и переходим на главную страницу
 if (($_POST[&#039;login&#039;]==&quot;admin&quot;) &amp;&amp;($_POST[&#039;pass&#039;]==$password) &amp;&amp;($_POST[&#039;sum&#039;]==$sum)){
setcookie(&quot;adm_log&quot;,$_POST[&#039;login&#039;],time()+3600,&quot;/&quot;);
setcookie(&quot;adm_pass&quot;,$_POST[&#039;pass&#039;],time()+3600,&quot;/&quot;);
 header(&quot;Location: index.php&quot;); 
 }


 ?&gt;
&lt;html&gt;
//Создаем форму
&lt;form action=&quot;login.php&quot; method=&quot;post&quot;&gt;
Ваше имя: &lt;input type=&quot;text&quot; name=&quot;login&quot;&gt;&lt;br&gt;
Ваш пароль: &lt;input type=&quot;password&quot; name=&quot;pass&quot;&gt;&lt;br&gt;
Введите сумму чисел: &lt;?php echo &quot;&lt;b&gt;&quot;; echo $a; echo &quot;+&quot;; echo $b; echo&quot;&lt;/b&gt;&quot;;?&gt;
&lt;input type=&quot;text&quot; name=&quot;sum&quot;&gt;&lt;br&gt;
&lt;input type=&quot;submit&quot; name=&quot;go&quot; value=&quot;Enter!&quot;&gt;
&lt;/form&gt;
&lt;/html&gt;</code></pre></div><p>Почему-то, даже если ввожу все правильно, то не могу пройти проверку <img src="https://forum.php-myadmin.ru/img/smilies/sad.png" width="15" height="15" alt="sad" />&nbsp; Если удалить проверку суммы чисел и все, что с ними связано, то все нормально...</p>]]></content>
			<author>
				<name><![CDATA[Ketsyki]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3147</uri>
			</author>
			<updated>2011-05-04T16:56:06Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16182#p16182</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16095#p16095" />
			<content type="html"><![CDATA[<p>О. Вроде бы все написал <img src="https://forum.php-myadmin.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /> И даже все работает <img src="https://forum.php-myadmin.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>Осталось только всякие мелочи исправить, чтоб удобнее было пользоваться админкой.<br />Спс вам огромное <img src="https://forum.php-myadmin.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></content>
			<author>
				<name><![CDATA[Ketsyki]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3147</uri>
			</author>
			<updated>2011-04-26T20:38:36Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16095#p16095</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16091#p16091" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>Где писать?</p></blockquote></div><p>Пусть разрывается. Если так не нравится, то попробуйте как-нибудь иначе придумать.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-04-26T20:07:29Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16091#p16091</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16089#p16089" />
			<content type="html"><![CDATA[<p>Сейчас нет возможности проверить. У меня сервер на ноуте, а я обычно, пишу код, подключаясь с компа к ноуту. А щас с подключением проблемы <img src="https://forum.php-myadmin.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>Так-то это работать должно, но у меня в коде кроме php еще и много html. А переписывать html в echo &#039;&lt;тут html код&gt;&#039; немного лениво. <img src="https://forum.php-myadmin.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>Вот допустим, у меня такая структура:<br />&lt;?php<br />?&gt;<br />&lt;html&gt;<br />&lt;/html&gt;<br />&lt;?php<br />?&gt;<br />...<br />&lt;?php<br />?&gt;<br />В самом начале я написал<br />session_start();<br />if (isset($_COOKIE[&#039;adm_log&#039;]) &amp;&amp; isset ($_COOKIE[&#039;adm_pass&#039;])) {<br />if (($_COOKIE[&#039;adm_log&#039;]==&quot;a&quot;) &amp;&amp; ($_COOKIE[&#039;adm_pass&#039;]==&quot;a&quot;)) {<br />&nbsp; Тут код страницы;</p><p>А<br />} <br />} else {<br />header(&quot;Location: login.php&quot;);<br />}<br />Где писать? По идее это должно быть в конце кода, но у меня там html и код как бы разрывается...</p>]]></content>
			<author>
				<name><![CDATA[Ketsyki]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3147</uri>
			</author>
			<updated>2011-04-26T19:54:45Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16089#p16089</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16088#p16088" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>Типа такого?</p></blockquote></div><p>Можно так. Вы хоть пробуйте, я же не отладчик, для этого инструменты есть.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-04-26T19:44:45Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16088#p16088</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16084#p16084" />
			<content type="html"><![CDATA[<p>Т.е. этот код все равно надо писать?<br />session_start();<br />if (isset($_COOKIE[&#039;adm_log&#039;]) &amp;&amp; isset ($_COOKIE[&#039;adm_pass&#039;])) {<br /> if (($_COOKIE[&#039;adm_log&#039;]==&quot;a&quot;) &amp;&amp; ($_COOKIE[&#039;adm_pass&#039;]==&quot;a&quot;)) {<br />&nbsp; Тут код страницы;<br /> } <br />} else {<br />header(&quot;Location: login.php&quot;);<br />}</p><p>Типа такого?</p>]]></content>
			<author>
				<name><![CDATA[Ketsyki]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3147</uri>
			</author>
			<updated>2011-04-26T19:31:15Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16084#p16084</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16083#p16083" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>чтоб при попытке зайти на страницу main не авторизовавшись, открывалась бы страница для ввода логина и пароля</p></blockquote></div><p>Если проверку не проходит, то перенаправляйте строкой:<br /></p><div class="codebox"><pre><code>header(&quot;Location: login.php&quot;);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-04-26T19:24:45Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16083#p16083</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16076#p16076" />
			<content type="html"><![CDATA[<p>Все. Заработало.<br />Вот, допустим, есть у меня кроме этих страниц index и login еще страница main. Как сделать, чтоб при попытке зайти на страницу main не авторизовавшись, открывалась бы страница для ввода логина и пароля?<br />Переписывать этот код:<br /></p><div class="codebox"><pre><code>&lt;?php 
session_start();
if (isset($_COOKIE[&#039;adm_log&#039;]) &amp;&amp; isset ($_COOKIE[&#039;adm_pass&#039;])) {
 if (($_COOKIE[&#039;adm_log&#039;]==&quot;a&quot;) &amp;&amp; ($_COOKIE[&#039;adm_pass&#039;]==&quot;a&quot;)) {
  echo &quot;Привет, админ!&quot;;// Если впихивать этот код на каждую страницу, то придется вместо этой строки писать весь остальной код.
 } 
} else {
echo &#039;Привет, гость! Залогинься - &lt;a href=&quot;login.php&quot;&gt;тут&lt;/a&gt;&#039;;
}
?&gt;</code></pre></div><p>нет желания. Может есть другой способ?</p>]]></content>
			<author>
				<name><![CDATA[Ketsyki]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3147</uri>
			</author>
			<updated>2011-04-26T12:37:00Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16076#p16076</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16073#p16073" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>headers already sent</p></blockquote></div><p>Функция setcookie() должна выполняться до вывода HTML кода.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-04-25T20:38:58Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16073#p16073</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16071#p16071" />
			<content type="html"><![CDATA[<p>Блин. Кучу примеров посмотрел. Они либо только для апача, либо я не понимаю, что там написано.<br />Вот подобрал боле-менее понятный пример:<br />index.php<br /></p><div class="codebox"><pre><code>&lt;?php 
session_start();
if (isset($_COOKIE[&#039;adm_log&#039;]) &amp;&amp; isset ($_COOKIE[&#039;adm_pass&#039;])) {
 if (($_COOKIE[&#039;adm_log&#039;]==&quot;a&quot;) &amp;&amp; ($_COOKIE[&#039;adm_pass&#039;]==&quot;a&quot;)) {
  echo &quot;Привет, админ!&quot;;
 } 
} else {
echo &#039;Привет, гость! Залогинься - &lt;a href=&quot;login.php&quot;&gt;тут&lt;/a&gt;&#039;;
}
?&gt;</code></pre></div><p>login.php<br /></p><div class="codebox"><pre><code>&lt;?php session_start(); ?&gt;
&lt;html&gt;
&lt;form action=&quot;login.php&quot; method=&quot;post&quot;&gt;
Ваше имя: &lt;input type=&quot;text&quot; name=&quot;login&quot;&gt;&lt;br&gt;
Ваш пароль: &lt;input type=&quot;password&quot; name=&quot;pass&quot;&gt;&lt;br&gt;
&lt;input type=&quot;submit&quot; name=&quot;go&quot; value=&quot;Enter!&quot;&gt;
&lt;/form&gt;
&lt;/html&gt;
&lt;?php
if ($_POST[&#039;go&#039;]){
 if (($_POST[&#039;login&#039;]==&quot;q&quot;) &amp;&amp;($_POST[&#039;pass&#039;]==&quot;q&quot;)){
setcookie(&quot;adm_log&quot;,$_POST[&#039;login&#039;],time()+3600,&quot;/&quot;);
setcookie(&quot;adm_pass&quot;,$_POST[&#039;pass&#039;],time()+3600,&quot;/&quot;);
 header(&quot;Location: index.php&quot;); 
 }
}
?&gt;</code></pre></div><p>При вводе неверного логина или пароля ничего не происходит (как и должно быть). При вводе верного логина и пароля появляется вот что:<br />Warning: Cannot modify header information - headers already sent by (output started at C:\Serv\xampp\htdocs\mysite\auth\login.php:9) in C:\Serv\xampp\htdocs\mysite\auth\login.php on line 12</p><p>Warning: Cannot modify header information - headers already sent by (output started at C:\Serv\xampp\htdocs\mysite\auth\login.php:9) in C:\Serv\xampp\htdocs\mysite\auth\login.php on line 13</p><p>Warning: Cannot modify header information - headers already sent by (output started at C:\Serv\xampp\htdocs\mysite\auth\login.php:9) in C:\Serv\xampp\htdocs\mysite\auth\login.php on line 14</p>]]></content>
			<author>
				<name><![CDATA[Ketsyki]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3147</uri>
			</author>
			<updated>2011-04-25T17:51:15Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16071#p16071</id>
		</entry>
</feed>
