<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум PHP-MyAdmin.RU &mdash; форма+sql]]></title>
	<link rel="self" href="https://forum.php-myadmin.ru/extern.php?action=feed&amp;tid=2675&amp;type=atom" />
	<updated>2012-09-08T10:40:08Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.php-myadmin.ru/viewtopic.php?id=2675</id>
		<entry>
			<title type="html"><![CDATA[Re: форма+sql]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=21267#p21267" />
			<content type="html"><![CDATA[<p>Большое спасибо,вроде всё получилось.Пойду разные защиты ставить пробовать.Ещё раз спасибо.А то уже дня три искал причину,не один скрипт перепробовал.</p>]]></content>
			<author>
				<name><![CDATA[юрьич]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=4529</uri>
			</author>
			<updated>2012-09-08T10:40:08Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=21267#p21267</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: форма+sql]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=21266#p21266" />
			<content type="html"><![CDATA[<p>Прошу простить мне мою тупость,но в упор не вижу неравенства.-Всё заметил.</p>]]></content>
			<author>
				<name><![CDATA[юрьич]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=4529</uri>
			</author>
			<updated>2012-09-08T10:30:00Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=21266#p21266</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: форма+sql]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=21265#p21265" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>$_POST[&#039;mather&#039;] не равно $_POST[&#039;mather &#039;]</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-09-08T10:17:27Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=21265#p21265</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: форма+sql]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=21264#p21264" />
			<content type="html"><![CDATA[<p>Я конечно попытаюсь,но ведь пробелы не только у этих переменных,а проблемы с этими.(Я просто рассуждаю)</p>]]></content>
			<author>
				<name><![CDATA[юрьич]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=4529</uri>
			</author>
			<updated>2012-09-08T10:11:48Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=21264#p21264</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: форма+sql]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=21262#p21262" />
			<content type="html"><![CDATA[<p>Обратите внимание на лишние пробелы, например здесь: $_POST[&#039;mather &#039;].<br /></p><div class="codebox"><pre><code>$mather = (isset($_POST[&#039;mather&#039;])) ? $_POST[&#039;mather &#039;] : &#039;&#039;;
$hd = (isset($_POST[&#039;hd&#039;])) ? $_POST[&#039;hd &#039;] : &#039;&#039;;
$member = (isset($_POST[&#039;member&#039;])) ? $_POST[&#039;member &#039;] : &#039;&#039;;
$block = (isset($_POST[&#039;block&#039;])) ? $_POST[&#039;block &#039;] : &#039;&#039;;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-09-08T10:05:46Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=21262#p21262</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[форма+sql]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=21259#p21259" />
			<content type="html"><![CDATA[<p>Здравствуйте.Windows7-Denwer.Установил скрипт регистрации на сайте.Всё было нормально.Решил добавить поля.Начались проблемы.На данный момент такая ситуация.Из семи добавленных полей четыре не заносятся в БД.Взгляните,пожалуйста на скрипт.В нём ли проблема или в каких то настройках?<br /></p><div class="codebox"><pre><code>&lt;?php
 

 //заносим введенный пользователем текст в переменную $x, если он пустой, то уничтожаем переменную
$sees = (isset($_POST[&#039;sees&#039;])) ? $_POST[&#039;sees&#039;] : &#039;&#039;; // если переменная $_POST[&#039;sees&#039;] задана, то используем её. Если не задана, то присваиваем пустую строку  
$teep_pc = (isset($_POST[&#039;teep_pc&#039;])) ? $_POST[&#039;teep_pc&#039;] : &#039;&#039;; 
$mather = (isset($_POST[&#039;mather&#039;])) ? $_POST[&#039;mather &#039;] : &#039;&#039;;
$hd = (isset($_POST[&#039;hd&#039;])) ? $_POST[&#039;hd &#039;] : &#039;&#039;;
$member = (isset($_POST[&#039;member&#039;])) ? $_POST[&#039;member &#039;] : &#039;&#039;;
$block = (isset($_POST[&#039;block&#039;])) ? $_POST[&#039;block &#039;] : &#039;&#039;; 
$disp = (isset($_POST[&#039;disp&#039;])) ? $_POST[&#039;disp&#039;] : &#039;&#039;;

if (isset($_POST[&#039;login&#039;])) { $login = $_POST[&#039;login&#039;]; if ($login == &#039;&#039;) { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST[&#039;password&#039;])) { $password=$_POST[&#039;password&#039;]; if ($password ==&#039;&#039;) { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (isset($_POST[&#039;code&#039;])) { $code = $_POST[&#039;code&#039;]; if ($code == &#039;&#039;) { unset($code);} } //заносим введенный пользователем защитный код в переменную $code, если он пустой, то уничтожаем переменную

if (isset($_POST[&#039;email&#039;])) { $email = $_POST[&#039;email&#039;]; if ($email == &#039;&#039;) { unset($email);} } //заносим введенный пользователем e-mail, если он пустой, то уничтожаем переменную

if (empty($login) or empty($password)or empty($code) or empty($email)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit (&quot;Вы ввели не всю информацию, вернитесь назад и заполните все поля!&quot;); //останавливаем выполнение сценариев

}
if (!preg_match(&quot;/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i&quot;, $email)) //проверка е-mail адреса регулярными выражениями на корректность
{exit (&quot;Неверно введен е-mail!&quot;);}





function generate_code() //запускаем функцию, генерирующую код
{
                
    $hours = date(&quot;H&quot;); // час       
    $minuts = substr(date(&quot;H&quot;), 0 , 1);// минута 
    $mouns = date(&quot;m&quot;);    // месяц             
    $year_day = date(&quot;z&quot;); // день в году

    $str = $hours . $minuts . $mouns . $year_day; //создаем строку
    $str = md5(md5($str)); //дважды шифруем в md5
    $str = strrev($str);// реверс строки
    $str = substr($str, 3, 6); // извлекаем 6 символов, начиная с 3
    // Вам конечно же можно постваить другие значения, так как, если взломщики узнают, каким именно способом это все генерируется, то в защите не будет смысла.
    

    $array_mix = preg_split(&#039;//&#039;, $str, -1, PREG_SPLIT_NO_EMPTY);
    srand ((float)microtime()*1000000);
    shuffle ($array_mix);
    //Тщательно перемешиваем, соль, сахар по вкусу!!!
    return implode(&quot;&quot;, $array_mix);
}

function chec_code($code) //проверяем код
{
    $code = trim($code);//удаляем пробелы

    $array_mix = preg_split (&#039;//&#039;, generate_code(), -1, PREG_SPLIT_NO_EMPTY);
    $m_code = preg_split (&#039;//&#039;, $code, -1, PREG_SPLIT_NO_EMPTY);

    $result = array_intersect ($array_mix, $m_code);
if (strlen(generate_code())!=strlen($code))
{
    return FALSE;
}
if (sizeof($result) == sizeof($array_mix))
{
    return TRUE;
}
else
{
    return FALSE;
}
}

// после сравнения проверяем, пускать ли пользователя дальше или, он сделал ошибку, и остановить скрипт
if (!chec_code($_POST[&#039;code&#039;]))
{
exit (&quot;Вы ввели неверно код с картинки.&quot;); //останавливаем выполнение сценариев
}


//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);

$password = stripslashes($password);
$password = htmlspecialchars($password);


//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);


//если текст о пк введен,то обрабатываем его, чтобы теги и скрипты не работали, мало ли что люди могут ввести







// дописываем новое********************************************

//добавляем проверку на длину логина и пароля
if (strlen($login) &lt; 3 or strlen($login) &gt; 15) {

exit (&quot;Логин должен состоять не менее чем из 3 символов и не более чем из 15.&quot;); //останавливаем выполнение сценариев

}
if (strlen($password) &lt; 3 or strlen($password) &gt; 15) {

exit (&quot;Пароль должен состоять не менее чем из 3 символов и не более чем из 15.&quot;); //останавливаем выполнение сценариев

}

if (empty($_FILES[&#039;fupload&#039;][&#039;name&#039;]))
{
//если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью &quot;нет аватара&quot;
$avatar = &quot;avatars/net-avatara.jpg&quot;; //можете нарисовать net-avatara.jpg или взять в исходниках
}

else 
{
//иначе - загружаем изображение пользователя
$path_to_90_directory = &#039;avatars/&#039;;//папка, куда будет загружаться начальная картинка и ее сжатая копия

    
if(preg_match(&#039;/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/&#039;,$_FILES[&#039;fupload&#039;][&#039;name&#039;]))//проверка формата исходного изображения
     {    
              
        $filename = $_FILES[&#039;fupload&#039;][&#039;name&#039;];
        $source = $_FILES[&#039;fupload&#039;][&#039;tmp_name&#039;];    
        $target = $path_to_90_directory . $filename;
        move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory

    if(preg_match(&#039;/[.](GIF)|(gif)$/&#039;, $filename)) {
    $im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    }
    if(preg_match(&#039;/[.](PNG)|(png)$/&#039;, $filename)) {
    $im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    }
    
    if(preg_match(&#039;/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/&#039;, $filename)) {
        $im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    }
    
//СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ ВЗЯТО С САЙТА www.codenet.ru

// Создание квадрата 90x90
// dest - результирующее изображение 
// w - ширина изображения 
// ratio - коэффициент пропорциональности 

$w = 90;  // квадратная 90x90. Можно поставить и другой размер.

// создаём исходное изображение на основе 
// исходного файла и определяем его размеры 
$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения

         // создаём пустую квадратную картинку 
         // важно именно truecolor!, иначе будем иметь 8-битный результат 
         $dest = imagecreatetruecolor($w,$w); 

         // вырезаем квадратную серединку по x, если фото горизонтальное 
         if ($w_src&gt;$h_src) 
         imagecopyresampled($dest, $im, 0, 0,
                          round((max($w_src,$h_src)-min($w_src,$h_src))/2),
                          0, $w, $w, min($w_src,$h_src), min($w_src,$h_src)); 

         // вырезаем квадратную верхушку по y, 
         // если фото вертикальное (хотя можно тоже серединку) 
         if ($w_src&lt;$h_src) 
         imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
                          min($w_src,$h_src), min($w_src,$h_src)); 

         // квадратная картинка масштабируется без вырезок 
         if ($w_src==$h_src) 
         imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src); 
         

$date=time(); //вычисляем время в настоящий момент.
imagejpeg($dest, $path_to_90_directory.$date.&quot;.jpg&quot;);//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.

//почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.

$avatar = $path_to_90_directory.$date.&quot;.jpg&quot;;//заносим в переменную путь до аватара.

$delfull = $path_to_90_directory.$filename; 
unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
}
else 
         {
         //в случае несоответствия формата, выдаем соответствующее сообщение
         
exit (&quot;Аватар должен быть в формате &lt;strong&gt;JPG,GIF или PNG&lt;/strong&gt;&quot;); //останавливаем выполнение сценариев

         }
}
//---------------конец процесса загрузки и присвоения переменной $avatar адреса загруженной авы


$password = md5($password);//шифруем пароль

$password = strrev($password);// для надежности добавим реверс

$password = $password.&quot;b3p6f&quot;;
//можно добавить несколько своих символов по вкусу, например, вписав &quot;b3p6f&quot;. Если этот пароль будут взламывать метадом подбора у себя на сервере этой же md5,то явно ничего хорошего не выйдет. Но советую ставить другие символы, можно в начале строки или в середине.

//При этом необходимо увеличить длину поля password в базе. Зашифрованный пароль может получится гораздо большего размера.


// дописали новое********************************************

// Далее идет все из первой части статьи,но необходимо дописать изменение в запрос к базе. 

// подключаемся к базе
include (&quot;bd.php&quot;);// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь 

// проверка на существование пользователя с таким же логином
$result = mysql_query(&quot;SELECT id FROM users WHERE login=&#039;$login&#039;&quot;,$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow[&#039;id&#039;])) {

exit (&quot;Извините, введённый вами логин уже зарегистрирован. Введите другой логин.&quot;); //останавливаем выполнение сценариев

}

// если такого нет, то сохраняем данные
$result2 = mysql_query (&quot;INSERT INTO users (login,password,avatar,email,teep_pc,sees,hd,member,block,disp,mather,date)
 VALUES(&#039;$login&#039;,&#039;$password&#039;,&#039;$avatar&#039;,&#039;$email&#039;,&#039;$teep_pc&#039;,&#039;$sees&#039;,&#039;$hd&#039;,&#039;$member&#039;,&#039;$block&#039;,&#039;$disp&#039;,&#039;$mather&#039;,NOW())&quot;)or die(mysql_error());// Проверяем, есть ли ошибки
if ($result2==&#039;TRUE&#039;)
{


$result3 = mysql_query (&quot;SELECT id FROM users WHERE login=&#039;$login&#039;&quot;,$db);//извлекаем идентификатор пользователя. Благодаря ему у нас и будет уникальный код активации, ведь двух одинаковых идентификаторов быть не может.
$myrow3 = mysql_fetch_array($result3);
$activation = md5($myrow3[&#039;id&#039;]).md5($login);//код активации аккаунта. Зашифруем через функцию md5 идентификатор и логин. Такое сочетание пользователь вряд ли сможет подобрать вручную через адресную строку.

$subject = &quot;Подтверждение регистрации&quot;;//тема сообщения
$message = &quot;Здравствуйте! Спасибо за регистрацию на citename.ru\nВаш логин: &quot;.$login.&quot;\n
Перейдите по ссылке, чтобы активировать ваш аккаунт:\nhttp://nikita/reg/activation.php?login=&quot;.$login.&quot;&amp;code=&quot;.$activation.&quot;\nС уважением,\n
Администрация citename.ru&quot;;//содержание сообщение
mail($email, $subject, $message, &quot;Content-type:text/plane; Charset=utf-8\r\n&quot;);//отправляем сообщение
    
echo &quot;Вам на E-mail выслано письмо с cсылкой, для подтверждения регистрации. Внимание! Ссылка действительна 1 час. &lt;a href=&#039;index.php&#039;&gt;Главная страница&lt;/a&gt;&quot;; //говорим о отправленном письме пользователю
}

else {

exit (&quot;Ошибка! Вы не зарегистрированы.&quot;); //останавливаем выполнение сценариев

     }
?&gt;</code></pre></div><p>Не заносятся:mather,meember,hd,block</p>]]></content>
			<author>
				<name><![CDATA[юрьич]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=4529</uri>
			</author>
			<updated>2012-09-08T09:45:39Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=21259#p21259</id>
		</entry>
</feed>
