Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Найдите ошибку пожалуйста.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
console
Отправлено: 20 Апреля, 2011 - 08:57:45
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)

[+]


При смене автарке пишет
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 6144 bytes) in www\update_user.php on line 206

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
  3.  
  4. if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
  5. {
  6. //если существует логин и пароль в сессиях, то проверяем, действительны ли они
  7. $login = $_SESSION['login'];
  8. $password = $_SESSION['password'];
  9. $result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password'",$db);
  10. $myrow2 = mysql_fetch_array($result2);
  11. if (empty($myrow2['id']))
  12.    {
  13.    //Если не действительны, то закрываем доступ
  14.     exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
  15.    }
  16. }
  17. else {
  18. //Проверяем, зарегистрирован ли вошедший
  19. exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
  20.  
  21. $old_login = $_SESSION['login']; //Старый логин нам пригодиться
  22. $id = $_SESSION['id'];//идентификатор пользователя тоже нужен
  23. $ava = "photo/net-avatara.jpg";//стандартное изображение будет кстати
  24.  
  25. ////////////////////////
  26. ////////ИЗМЕНЕНИЕ ЛОГИНА
  27. ////////////////////////
  28.  
  29. if (isset($_POST['login']))//Если существует логин
  30.       {
  31. $login = $_POST['login'];
  32. $login = stripslashes($login); $login = htmlspecialchars($login); $login = trim($login);//удаляем все лишнее
  33. if ($login == '') { exit("Вы не ввели логин");} //Если логин пустой, то останавливаем сценарий
  34.  
  35. if (strlen($login) < 3 or strlen($login) > 15) {//проверяем дину
  36. exit ("Логин должен состоять не менее чем из 3 символов и не более чем из 15."); //останавливаем выполнение сценариев
  37. }
  38.  
  39.  
  40. // проверка на существование пользователя с таким же логином
  41. $result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
  42. $myrow = mysql_fetch_array($result);
  43. if (!empty($myrow['id'])) {
  44. exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин."); //останавливаем выполнение сценариев
  45. }
  46.  
  47. $result4 = mysql_query("UPDATE users SET login='$login' WHERE login='$old_login'",$db);//обновляем в базе логин пользователя
  48. if ($result4=='TRUE') {//если выполнено верно, то обновляем все сообщения, которые отправлены ему
  49. mysql_query("UPDATE messages SET author='$login' WHERE author='$old_login'",$db);
  50. $_SESSION['login'] = $login;//Обновляем логин в сессии
  51. if (isset($_COOKIE['login'])) {
  52. setcookie("login", $login, time()+9999999);//Обновляем логин в куках
  53. }
  54.  
  55. echo "<html><head><meta http-equiv='Refresh' content='5; URL=setting.php?id=".$_SESSION['id']."'></head><body>Ваш логин изменен! Вы будете перемещены через 5 сек. Если не хотите ждать, то <a href='setting.php?id=".$_SESSION['id']."'>нажмите сюда.</a></body></html>";}//отправляем пользователя назад
  56.  
  57.       }
  58.  
  59. ////////////////////////
  60. ////////ИЗМЕНЕНИЕ имени
  61. ////////////////////////
  62.  
  63. if (isset($_POST['name']))//Если существует логин
  64.       {
  65. $name = $_POST['name'];
  66. $name = stripslashes($name); $name = htmlspecialchars($name); $name = trim($name);//удаляем все лишнее
  67. if ($name == '') { exit("Вы не ввели имя");} //Если логин пустой, то останавливаем сценарий
  68.  
  69. if (strlen($name) < 3 or strlen($name) > 15) {//проверяем дину
  70. exit ("Имя должно состоять не менее чем из 3 символовю"); //останавливаем выполнение сценариев
  71. }
  72.  
  73.  
  74. // проверка на существование пользователя с таким же логином
  75. $result = mysql_query("SELECT id FROM users WHERE name='$name'",$db);
  76. $myrow = mysql_fetch_array($result);
  77. if (!empty($myrow['id'])) {
  78. exit (""); //останавливаем выполнение сценариев
  79. }
  80.  
  81. $result4 = mysql_query("UPDATE users SET name='$name' WHERE name='$old_name'",$db);//обновляем в базе логин пользователя
  82. if ($result4=='TRUE') {//если выполнено верно, то обновляем все сообщения, которые отправлены ему
  83. mysql_query("UPDATE messages SET author='$name' WHERE author='$old_name'",$db);
  84. $_SESSION['name'] = $name;//Обновляем логин в сессии
  85. if (isset($_COOKIE['name'])) {
  86. setcookie("name", $name, time()+9999999);//Обновляем логин в куках
  87. }
  88.  
  89. echo "<html><head><meta http-equiv='Refresh' content='5; URL=setting.php?id=".$_SESSION['id']."'></head><body>Ваш логин изменен! Вы будете перемещены через 5 сек. Если не хотите ждать, то <a href='setting.php?id=".$_SESSION['id']."'>нажмите сюда.</a></body></html>";}//отправляем пользователя назад
  90.  
  91.       }
  92.  
  93. ////////////////////////
  94. ////////ИЗМЕНЕНИЕ сайта
  95. ////////////////////////
  96.  
  97. if (isset($_POST['sait']))//Если существует логин
  98.       {
  99. $sait = $_POST['sait'];
  100. $sait = stripslashes($sait); $sait = htmlspecialchars($sait); $sait = trim($sait);//удаляем все лишнее
  101. if ($sait == '') { exit("Вы не ввели логин");} //Если логин пустой, то останавливаем сценарий
  102.  
  103. if (strlen($sait) < 3 or strlen($sait) > 15) {//проверяем дину
  104. exit ("Логин должен состоять не менее чем из 3 символов и не более чем из 15."); //останавливаем выполнение сценариев
  105. }
  106.  
  107.  
  108. // проверка на существование пользователя с таким же логином
  109. $result = mysql_query("SELECT id FROM users WHERE sait='$sait'",$db);
  110. $myrow = mysql_fetch_array($result);
  111. if (!empty($myrow['id'])) {
  112. exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин."); //останавливаем выполнение сценариев
  113. }
  114.  
  115. $result4 = mysql_query("UPDATE users SET sait='$sait' WHERE sait='$sait'",$db);//обновляем в базе логин пользователя
  116. if ($result4=='TRUE') {//если выполнено верно, то обновляем все сообщения, которые отправлены ему
  117. mysql_query("UPDATE messages SET author='$sait' WHERE author='$sait'",$db);
  118. $_SESSION['sait'] = $sait;//Обновляем логин в сессии
  119. if (isset($_COOKIE['sait'])) {
  120. setcookie("sait", $sait, time()+9999999);//Обновляем логин в куках
  121. }
  122.  
  123. echo "<html><head><meta http-equiv='Refresh' content='5; URL=setting.php?id=".$_SESSION['id']."'></head><body>Ваш логин изменен! Вы будете перемещены через 5 сек. Если не хотите ждать, то <a href='setting.php?id=".$_SESSION['id']."'>нажмите сюда.</a></body></html>";}//отправляем пользователя назад
  124.  
  125.       }
  126.  
  127.  
  128. ////////////////////////
  129. ////////ИЗМЕНЕНИЕ ПАРОЛЯ
  130. ////////////////////////
  131.  
  132. else if (isset($_POST['password']))//Если существует пароль
  133.       {
  134. $password = $_POST['password'];
  135. $password = stripslashes($password);$password = htmlspecialchars($password);$password = trim($password);//удаляем все лишнее
  136. if ($password == '') { exit("Вы не ввели пароль");} //если пароль не введен, то выдаем ошибку
  137.  
  138. if (strlen($password) < 3 or strlen($password) > 15) {//проверка на количество символов
  139. exit ("Пароль должен состоять не менее чем из 3 символов и не более чем из 15."); //останавливаем выполнение сценариев
  140. }
  141.  
  142. $password = md5($password);//шифруем пароль
  143. $password = strrev($password);// для надежности добавим реверс
  144. $password = $password."b3p6f";
  145. //можно добавить несколько своих символов по вкусу, например, вписав "b3p6f". Если этот пароль будут взламывать методом подбора у себя на сервере этой же md5,то явно ничего хорошего не выйдет. Но советую ставить другие символы, можно в начале строки или в середине.
  146. //При этом необходимо увеличить длину поля password в базе. Зашифрованный пароль может получится гораздо большего размера.
  147.  
  148.  
  149. $result4 = mysql_query("UPDATE users SET password='$password' WHERE login='$old_login'",$db);//обновляем пароль
  150. if ($result4=='TRUE') {//если верно, то обновляем его в сессии
  151. $_SESSION['password'] = $password;
  152.  
  153. if (isset($_COOKIE['password'])) {
  154. setcookie("password",$_POST['password'], time()+9999999);//Обновляем пароль в куках, если они есть
  155. }
  156.  
  157.  
  158. echo "<html><head><meta http-equiv='Refresh' content='5; URL=page.php?id=".$_SESSION['id']."'></head><body>Ваш пароль изменен! Вы будете перемещены через 5 сек. Если не хотите ждать, то <a href='page.php?id=".$_SESSION['id']."'>нажмите сюда.</a></body></html>";}//отправляем обратно на его страницу
  159.  
  160.       }
  161.  
  162.  
  163.  
  164. ////////////////////////
  165. ////////ИЗМЕНЕНИЕ АВАТАРЫ
  166. ////////////////////////
  167.  
  168. else if (isset($_FILES['fupload']['name'])) //отправлялась ли переменная
  169.       {
  170.  
  171. if (empty($_FILES['fupload']['name']))
  172. {
  173. //если переменная пустая (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"
  174. $avatar = "photo/net-avatara.jpg"; //можете нарисовать net-avatara.jpg или взять в исходниках
  175. $result7 = mysql_query("SELECT avatar FROM users WHERE login='$old_login'",$db);//извлекаем текущий аватар
  176. $myrow7 = mysql_fetch_array($result7);
  177. if ($myrow7['avatar'] == $ava) {//если аватар был стандартный, то не удаляем его, ведь у на одна картинка на всех.
  178. $ava = 1;
  179. }
  180. else {unlink ($myrow7['avatar']);}//если аватар был свой, то удаляем его, затем поставим стандарт
  181. }
  182.  
  183. else
  184. {
  185. //иначе - загружаем изображение пользователя для обновления
  186. $path_to_90_directory = 'photo/';//папка, куда будет загружаться начальная картинка и ее сжатая копия
  187.  
  188.        
  189. if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
  190.          {     
  191.                        
  192.                 $filename = $_FILES['fupload']['name'];
  193.                 $source = $_FILES['fupload']['tmp_name'];      
  194.                 $target = $path_to_90_directory . $filename;
  195.                 move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory
  196.  
  197.         if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
  198.         $im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
  199.         }
  200.         if(preg_match('/[.](PNG)|(png)$/', $filename)) {
  201.         $im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
  202.         }
  203.        
  204.         if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
  205.                 $im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
  206.         }
  207.        
  208. //СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ ВЗЯТО С САЙТА www.codenet.ru
  209.  
  210. // Создание квадрата 90x90
  211. // dest - результирующее изображение
  212. // w - ширина изображения
  213. // ratio - коэффициент пропорциональности
  214.  
  215. $w = 90;  // квадратная 90x90. Можно поставить и другой размер.
  216.  
  217. // создаём исходное изображение на основе
  218. // исходного файла и определяем его размеры
  219. $w_src = imagesx($im); //вычисляем ширину
  220. $h_src = imagesy($im); //вычисляем высоту изображения
  221.  
  222.          // создаём пустую квадратную картинку
  223.          // важно именно truecolor!, иначе будем иметь 8-битный результат
  224.          $dest = imagecreatetruecolor($w,$w);
  225.  
  226.          // вырезаем квадратную серединку по x, если фото горизонтальное
  227.          if ($w_src>$h_src)
  228.          imagecopyresampled($dest, $im, 0, 0,
  229.                           round((max($w_src,$h_src)-min($w_src,$h_src))/2),
  230.                           0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
  231.  
  232.          // вырезаем квадратную верхушку по y,
  233.          // если фото вертикальное (хотя можно тоже серединку)
  234.          if ($w_src<$h_src)
  235.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
  236.                           min($w_src,$h_src), min($w_src,$h_src));
  237.  
  238.          // квадратная картинка масштабируется без вырезок
  239.          if ($w_src==$h_src)
  240.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
  241.                  
  242.  
  243. $date=time(); //вычисляем время в настоящий момент.
  244. imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.
  245.  
  246. //почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.
  247.  
  248. $avatar = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.
  249.  
  250. $delfull = $path_to_90_directory.$filename;
  251. unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
  252.  
  253. $result7 = mysql_query("SELECT avatar FROM users WHERE login='$old_login'",$db);//извлекаем текущий аватар пользователя
  254. $myrow7 = mysql_fetch_array($result7);
  255.  
  256. if ($myrow7['avatar'] == $ava) {//если он стандартный, то не удаляем его, ведь у нас одна картинка на всех.
  257. $ava = 1;
  258. }
  259. else {unlink ($myrow7['avatar']);}//если аватар был свой, то удаляем его
  260.  
  261.  
  262. }
  263. else
  264.         {
  265.                 //в случае несоответствия формата, выдаем соответствующее сообщение
  266.         exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>");
  267.                 }
  268.  
  269. }
  270.  
  271. $result4 = mysql_query("UPDATE users SET avatar='$avatar' WHERE login='$old_login'",$db);//обновляем аватар в базе
  272. if ($result4=='TRUE') {//если верно, то отправляем на личную страничку
  273. echo "<html><head><meta http-equiv='Refresh' content='5; URL=page.php?id=".$_SESSION['id']."'></head><body>Ваша аватарка изменена! Вы будете перемещены через 5 сек. Если не хотите ждать, то <a href='page.php?id=".$_SESSION['id']."'>нажмите сюда.</a></body></html>";}
  274.  
  275.       }
  276. ?>

(Добавление)
Я знаю почему она пишет она пшет потомучто большой размер аватарки что надо сделать чтобы доболвяло?

(Отредактировано автором: 20 Апреля, 2011 - 09:03:31)

 
 Top
vsll
Отправлено: 20 Апреля, 2011 - 09:57:43
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




 
 Top
Мелкий Супермодератор
Отправлено: 20 Апреля, 2011 - 11:38:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




console, а перевести не пробовали?
Скрипт не укладывается в лимит памяти, это к переезду на более дорогой тариф. Лимит в 8мб памяти для GD - несерьёзно.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB