<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум PHP-MyAdmin.RU &mdash; PHP код для небольшой админки. Ошибка.]]></title>
		<link>https://forum.php-myadmin.ru/viewtopic.php?id=2140</link>
		<atom:link href="https://forum.php-myadmin.ru/extern.php?action=feed&amp;tid=2140&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «PHP код для небольшой админки. Ошибка.».]]></description>
		<lastBuildDate>Thu, 05 May 2011 15:07:46 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16194#p16194</link>
			<description><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>А в чем смысл этого хэша?</p></blockquote></div><p>Перехват хеша не означает перехвата пароля. При одной учетной записи, это, конечно, не столь существенно.</p>]]></description>
			<author><![CDATA[null@example.com (Hanut)]]></author>
			<pubDate>Thu, 05 May 2011 15:07:46 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16194#p16194</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16193#p16193</link>
			<description><![CDATA[<p>А в чем смысл этого хэша? Это что-то типа кодирования? Какая разница. что будет - пароль или хеш? У меня только 1 учетная запись. Я с таким же успехом могу создать 32-значный пароль.</p>]]></description>
			<author><![CDATA[null@example.com (Ketsyki)]]></author>
			<pubDate>Thu, 05 May 2011 14:07:33 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16193#p16193</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16191#p16191</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Hanut)]]></author>
			<pubDate>Wed, 04 May 2011 21:40:29 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16191#p16191</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16187#p16187</link>
			<description><![CDATA[<p>Ну, это вместо капчи. Что б брутфорсом было труднее взломать</p>]]></description>
			<author><![CDATA[null@example.com (Ketsyki)]]></author>
			<pubDate>Wed, 04 May 2011 18:22:40 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16187#p16187</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16185#p16185</link>
			<description><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>Если удалить проверку суммы чисел и все, что с ними связано, то все нормально</p></blockquote></div><p>Я не понял зачем вы эту проверку сделали, учитывая, что работать она никак не может, ведь при каждом запуске скрипта значения функции rand() будут разные.</p>]]></description>
			<author><![CDATA[null@example.com (Hanut)]]></author>
			<pubDate>Wed, 04 May 2011 17:41:58 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16185#p16185</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16182#p16182</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Ketsyki)]]></author>
			<pubDate>Wed, 04 May 2011 16:56:06 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16182#p16182</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16095#p16095</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Ketsyki)]]></author>
			<pubDate>Tue, 26 Apr 2011 20:38:36 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16095#p16095</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16091#p16091</link>
			<description><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>Где писать?</p></blockquote></div><p>Пусть разрывается. Если так не нравится, то попробуйте как-нибудь иначе придумать.</p>]]></description>
			<author><![CDATA[null@example.com (Hanut)]]></author>
			<pubDate>Tue, 26 Apr 2011 20:07:29 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16091#p16091</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16089#p16089</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Ketsyki)]]></author>
			<pubDate>Tue, 26 Apr 2011 19:54:45 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16089#p16089</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16088#p16088</link>
			<description><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>Типа такого?</p></blockquote></div><p>Можно так. Вы хоть пробуйте, я же не отладчик, для этого инструменты есть.</p>]]></description>
			<author><![CDATA[null@example.com (Hanut)]]></author>
			<pubDate>Tue, 26 Apr 2011 19:44:45 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16088#p16088</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16084#p16084</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Ketsyki)]]></author>
			<pubDate>Tue, 26 Apr 2011 19:31:15 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16084#p16084</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16083#p16083</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Hanut)]]></author>
			<pubDate>Tue, 26 Apr 2011 19:24:45 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16083#p16083</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16076#p16076</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Ketsyki)]]></author>
			<pubDate>Tue, 26 Apr 2011 12:37:00 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16076#p16076</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16073#p16073</link>
			<description><![CDATA[<div class="quotebox"><cite>Ketsyki сказал:</cite><blockquote><p>headers already sent</p></blockquote></div><p>Функция setcookie() должна выполняться до вывода HTML кода.</p>]]></description>
			<author><![CDATA[null@example.com (Hanut)]]></author>
			<pubDate>Mon, 25 Apr 2011 20:38:58 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16073#p16073</guid>
		</item>
		<item>
			<title><![CDATA[Re: PHP код для небольшой админки. Ошибка.]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=16071#p16071</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Ketsyki)]]></author>
			<pubDate>Mon, 25 Apr 2011 17:51:15 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=16071#p16071</guid>
		</item>
	</channel>
</rss>
