PHP.SU

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

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

> Найдено сообщений: 10
grechan Отправлено: 22 Января, 2013 - 09:41:27 • Тема: Zend Router • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 2658
Разобрался в чем было дело - настройки роутера в конфигах
Поправил настройки роутера (application.ini)
PHP:
скопировать код в буфер обмена
  1.  
  2. resources.router.routes.id.type = "Zend_Controller_Router_Route_Regex"
  3. resources.router.routes.id.route = "page/(\w+)"
  4. resources.router.routes.id.defaults.module = default
  5. resources.router.routes.id.defaults.controller = page
  6. resources.router.routes.id.defaults.action = show
  7. resources.router.routes.id.map.1 = "id"
  8. resources.router.routes.id.reverse = "page/%s"
  9.  


маршрут устанавливаю так
PHP:
скопировать код в буфер обмена
  1.  
  2. $self = 'http://' . $_SERVER['SERVER_NAME'];
  3. ......
  4. echo '<a href="'.$self.'/page/'.$result['id'].'">'.$result['name'].'</a></br>';
  5. или
  6. echo '<a href="'. $this->url(array('controller' => 'page', 'action' => $result['id'])). '">'.$result['name'].'</a></br>';
  7.  


получается такая вот ссылочка
page/1 или page/2 или page/3
grechan Отправлено: 21 Января, 2013 - 16:57:41 • Тема: Zend Router • Форум: Объектно-ориентированное программирование

Ответов: 8
Просмотров: 2658
Помогите, знатоки Zend-а.
В конфигах прописываю
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. resources.router.routes.show.type = "Zend_Controller_Router_Route_Regex"
  3. resources.router.routes.show.route = "page/(\w+)"
  4. resources.router.routes.show.defaults.module = default
  5. resources.router.routes.show.defaults.controller = "page"
  6. resources.router.routes.show.defaults.action = "show"
  7. resources.router.routes.show.map.1 = "id"
  8. resources.router.routes.show.reverse = "page/%s"
  9.  


дальше
формирую сам маршрут (ссылку)
PHP:
скопировать код в буфер обмена
  1.  
  2. <a href="'. $this->url(array('controller' => 'page', 'action' => 'show', 'id'=>$result['id'])). '">'.$result['name'].'</a>
  3.  


Хочу получить ссылку вида page/show/1 или page/show/3

Но получаю ссылку вида page/show/id/1 или page/show/id/3

И вообще ссылки вида page/show/id/1 или page/show/id/3 у меня работают без всякой настройки router-а в конфигах.
Подскажите, кто знает. Я на этом подвис, не могу двигаться дальше. Официальную документацию почитал, но разобраться не смог. Спасибо.
grechan Отправлено: 06 Декабря, 2012 - 00:07:41 • Тема: создание изображения из файла, отправленного аяксом • Форум: Графика в PHP

Ответов: 6
Просмотров: 5009
От FileReader-а все-таки решил отказаться. Решил использовать FormData, и у меня все получилось, хотя реализовать хотел совсем по другому.
Вот этим отправляю
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function uploadFile(file, url) {
  3.         var form = document.forms.myform;
  4.         var formData = new FormData(form);
  5.         formData.append("myfile", file);
  6.     var xhr = new XMLHttpRequest();    
  7.    
  8.     xhr.upload.addEventListener("progress", function(e) {
  9.       if (e.lengthComputable) {
  10.         var progress = (e.loaded * 100) / e.total;
  11.         /* ... обновляем инфу о процессе загрузки ... */
  12.       }
  13.     }, false);
  14.         /*xhr.upload.addEventListener("loadstart", function(e) {
  15.       alert ("Загрузка началась");
  16.     }, false);*/
  17.    
  18.     /* ... можно обрабатывать еще события load и error объекта xhr.upload ... */
  19.  
  20.     xhr.onreadystatechange = function () {
  21.       if (this.readyState == 4) {
  22.         if(this.status == 200) {
  23.           document.getElementById("status").innerHTML=xhr.responseText;
  24.                   /* ... все ок! смотрим в this.responseText ... */
  25.         } else {
  26.           /* ... ошибка! ... */
  27.         }
  28.       }
  29.     };
  30.    
  31.         var xhr = new XMLHttpRequest();
  32.         xhr.open("POST", url);
  33.        
  34.         xhr.send(formData);
  35. }
  36.  


и вот так обрабатываю
PHP:
скопировать код в буфер обмена
  1.  
  2. $error = $_FILES['myfile']['error'];
  3.   switch($error) {
  4.     case 0 :
  5.       $error = 'файл загружен';
  6.       break;    
  7.     case 1 : case 2 :
  8.       $error = 'слишком большой файл';
  9.       break;
  10.     case 3 :
  11.       $error = 'файл загружен частично';
  12.       break;
  13.     case 4 :
  14.       $error = 'файл не был загружен';
  15.   }  
  16. echo $error.'</br>';
  17. function transliterate_file($st_transliterate_file)
  18. {
  19. $st_transliterate_file = strtr($st_transliterate_file,'','');
  20.  
  21. $st_transliterate_file = strtr($st_transliterate_file, array(
  22. '0'=>'0','1'=>'1','2'=>'2','3'=>'3','4'=>'4','5'=>'5','6'=>'6','7'=>'7','8'=>'8','9'=>'9',' '=>'-','-'=>'-','+'=>'-','_'=>'-','='=>'','*'=>'','\\'=>'','/'=>'','('=>'',')'=>'','['=>'',']'=>'','{'=>'','}'=>'','<'=>'','>'=>'','.'=>'',','=>'','\"'=>'',':'=>'',';'=>'','!'=>'','?'=>'','№'=>'','%'=>'','$'=>'','&'=>'','#'=>'','@'=>'',
  23. 'а'=>'a','А'=>'a','б'=>'b','Б'=>'b','в'=>'v','В'=>'v','г'=>'g','Г'=>'g','д'=>'d','Д'=>'d','е'=>'e','Е'=>'e','ё'=>'e','Ё'=>'e','ж'=>'zh','Ж'=>'zh','з'=>'z','З'=>'z','и'=>'i','И'=>'i','й'=>'j','Й'=>'j','к'=>"k",'К'=>"k",'л'=>'l','Л'=>"l",'м'=>'m','М'=>'m','н'=>'n','Н'=>'n','о'=>'o','О'=>'o','п'=>'p','П'=>'p','р'=>'r','Р'=>'r','с'=>'s','С'=>'s','т'=>'t','Т'=>'t','у'=>'u','У'=>'u','ф'=>'f','Ф'=>'f','х'=>'h','Х'=>'h','ц'=>'c','Ц'=>'c','ч'=>'ch','Ч'=>'ch','ш'=>'sh','Ш'=>'sh','щ'=>'shch','Щ'=>'shch','ъ'=>'','Ъ'=>'','ы'=>'y','Ы'=>'y','ь'=>'','Ь'=>'','э'=>'ee','Э'=>'ee','ю'=>'yu','Ю'=>'yu','я'=>'ya','Я'=>'ya',
  24. ));  
  25. return $st_transliterate_file;
  26. }
  27.  
  28. if (!empty($_FILES['myfile']['name']))
  29. {
  30.         $im = imagecreatefromjpeg($_FILES['myfile']['tmp_name']);
  31.         $imx = imagesx($im); //исходная ширина
  32.         $imy = imagesy($im);
  33.         $newx_b = $imx; //ширина
  34.         $newy_b = $imy; //высота
  35.         $folder = $_SERVER['DOCUMENT_ROOT'].'/temp/';
  36.         $folder_temp = '/temp/';
  37.         $file_name = $_FILES['myfile']['name'];
  38.         $file_name_array = explode('.', $file_name);
  39.         $file_name_array[0] = transliterate_file ($file_name_array[0]);
  40.         $file_name_array[0] = strtolower ($file_name_array[0]);
  41.         $file_name_array[1] = strtolower ($file_name_array[1]);
  42.         //Формируем название большого файла
  43.         $file_name = implode (".",$file_name_array);
  44.        
  45.         echo '$file_name'.$file_name;
  46.         $canvas_b = imagecreatetruecolor($newx_b, $newy_b);//новая чистая картинка (imagecreate, imagecreatetruecolor)
  47.         imagecolortransparent($canvas_b, imagecolorallocate($canvas_b, 0, 0, 0));
  48.         imagealphablending($canvas_b, false);
  49.         imagesavealpha($canvas_b, true);
  50.        
  51.         imagecopyresampled($canvas_b, $im, 0, 0, 0, 0, $newx_b, $newy_b, $imx, $imy);//наложение изображений (imagecopy, imagecopyresized, imagecopyresampled)
  52.        
  53.         //**************************************************************************************************
  54.         //Записываем файл      
  55.         //**************************************************************************************************
  56.        
  57.         $result=imagejpeg($canvas_b,$folder.$file_name);
  58.        
  59.         if ($result==true)
  60.         {
  61.                 echo 'Файл записан';
  62.         }
  63.         else
  64.         {
  65.                 echo 'Файл не записан';
  66.         }
  67. }
  68. else
  69. {
  70. echo 'Файл не выбран';
  71. }
  72.  
  73. ?>
  74.  


На выходе получилось:
выбор файлов, до их отправки на сервер - отображение в виде миниатюр, с которыми можно делать все, что угодно, а потом отправка их сервер.
grechan Отправлено: 01 Декабря, 2012 - 23:25:35 • Тема: создание изображения из файла, отправленного аяксом • Форум: Графика в PHP

Ответов: 6
Просмотров: 5009
HTML5 File Api уже позволяет отправлять средствами ajax файлы на сервер. Более того появилась новая возможность отображать миниатюры загружаемых изображений на сервер (не через iframe), после чего файл или несколько файлов отправляются на сервер через ajax. Это я и пробую сейчас оформить на сайте. На забруговых сайтах уже давно есть готовые скрипты для реализации всего этого, я просто пытаюсь под себя чуть-чуть переделать ну и разобраться конечно же не помешало бы.
Что касается отправки клиентом инфы, а также получения ее на сервер - у меня сомнений нет - отправляется и загружается. А вот, что дальше делать с полученным файлом, я не знаю.
Вроде как вижу 2 пути решения
1. Отправлять с нужной кодировкой (шифрованием, представлением данных), что бы пхп без проблем мог это все съесть
2. Знать что же я загрузил, и дальше пережёвывать это уже на сервере.
grechan Отправлено: 01 Декабря, 2012 - 01:42:13 • Тема: создание изображения из файла, отправленного аяксом • Форум: Графика в PHP

Ответов: 6
Просмотров: 5009
Вот этим отправляю
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function uploadFile(file, url) {
  3.  
  4.   var reader = new FileReader();
  5.  
  6.   reader.onload = function() {    
  7.     var xhr = new XMLHttpRequest();    
  8.    
  9.     xhr.upload.addEventListener("progress", function(e) {
  10.       if (e.lengthComputable) {
  11.         var progress = (e.loaded * 100) / e.total;
  12.         /* ... обновляем инфу о процессе загрузки ... */
  13.       }
  14.     }, false);
  15.        
  16.         if (!XMLHttpRequest.prototype.sendAsBinary) {
  17.  
  18.     XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
  19.         function byteValue(x) {
  20.             return x.charCodeAt(0) & 0xff;
  21.             }
  22.         var ords = Array.prototype.map.call(datastr, byteValue);
  23.         var ui8a = new Uint8Array(ords);
  24.         this.send(ui8a.buffer);
  25.         }
  26.     }
  27.    
  28.     /* ... можно обрабатывать еще события load и error объекта xhr.upload ... */
  29.  
  30.     xhr.onreadystatechange = function () {
  31.       if (this.readyState == 4) {
  32.         if(this.status == 200) {
  33.           document.getElementById("status").innerHTML=xhr.responseText;
  34.                   /* ... все ок! смотрим в this.responseText ... */
  35.         } else {
  36.           /* ... ошибка! ... */
  37.         }
  38.       }
  39.     };
  40.    
  41.     xhr.open("POST", url);
  42.     var boundary = "xxxxxxxxx";    
  43.     // Устанавливаем заголовки
  44.     xhr.setRequestHeader("Content-Type", "multipart/form-data, boundary="+boundary);
  45.     xhr.setRequestHeader("Cache-Control", "no-cache");    
  46.     // Формируем тело запроса
  47.     var body = "--" + boundary + "\r\n";
  48.     body += "Content-Disposition: form-data; name='myFile'; filename='" + file.name + "'\r\n";
  49.     body += "Content-Type: application/octet-stream\r\n\r\n";
  50.     body += reader.result + "\r\n";
  51.     body += "--" + boundary + "--";
  52.         xhr.send(body);
  53.     /*if(xhr.sendAsBinary) {
  54.       // только для firefox
  55.       xhr.sendAsBinary(body);
  56.     } else {
  57.       // chrome (так гласит спецификация W3C)
  58.       xhr.send(body);
  59.     }*/
  60.   };
  61.   // Читаем файл
  62.   reader.readAsBinaryString(file);
  63. }
  64.  
  65.  
  66. uploadAll.onclick=function()
  67. {
  68. var list=document.getElementsByTagName('LI')[0];
  69. uploadFile(list.file, "ajax.php");
  70. }
  71.  

, а вот этим обрабатываю
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $error = $_FILES['file']['error'];
  5.   switch($error) {
  6.     case 0 :
  7.       $error = 'файл загружен';
  8.       break;    
  9.     case 1 : case 2 :
  10.       $error = 'слишком большой файл';
  11.       break;
  12.     case 3 :
  13.       $error = 'файл загружен частично';
  14.       break;
  15.     case 4 :
  16.       $error = 'файл не был загружен';
  17.   }  
  18. echo $error.'</br>';
  19. $im = imagecreatefromjpeg($_FILES['myFile']['tmp_name']);
  20. if (!$im) echo 'дело дрянь </br>';
  21. $imx = imagesx($im); //исходная ширина
  22. $imy = imagesy($im);
  23. $newx_b = $imx; //ширина
  24. $newy_b = $imy; //высота
  25. $folder = $_SERVER['DOCUMENT_ROOT'].'/temp/';
  26. $file_name = $_FILES['myFile']['name'];
  27.  
  28. $canvas_b = imagecreatetruecolor($newx_b, $newy_b);//новая чистая картинка (imagecreate, imagecreatetruecolor)
  29. imagecolortransparent($canvas_b, imagecolorallocate($canvas_b, 0, 0, 0));
  30. imagealphablending($canvas_b, false);
  31. imagesavealpha($canvas_b, true);
  32.  
  33. imagecopyresampled($canvas_b, $im, 0, 0, 0, 0, $newx_b, $newy_b, $imx, $imy);//наложение изображений (imagecopy, imagecopyresized, imagecopyresampled)
  34.  
  35. //**************************************************************************************************
  36. //Записываем файл      
  37. //**************************************************************************************************
  38.  
  39. $result=imagejpeg($canvas_b,$folder.$file_name);
  40.  
  41. if ($result==true)
  42. {
  43.         echo 'Файл записан';
  44. }
  45. else
  46. {
  47.         echo 'Файл не записан';
  48. }
  49. ?>
  50.  
grechan Отправлено: 01 Декабря, 2012 - 00:58:35 • Тема: создание изображения из файла, отправленного аяксом • Форум: Графика в PHP

Ответов: 6
Просмотров: 5009
После отправки файла (изображения) аяксом пытаюсь создать изображение через imagecreatefromjpeg. Файл точно загружается но изображение не создаётся. Позже понял, что на сервер оно приходит в виде бинарной строки. можно ли средствами пхп преобразовать бинарную строку до такого вида, чтобы изображение можно было создать imagecreatefromjpeg? Или может быть есть возможность получить изображение напрямую из бинарного потока? Файл формируется filereader-ом. Или искать пути решения на стороне клиента?
grechan Отправлено: 27 Октября, 2011 - 09:53:35 • Тема: информация после # (якоря) • Форум: Вопросы новичков

Ответов: 15
Просмотров: 870
DeepVarvar пишет:
Схавать всю строку из href и передать через ajax

А можно поподробнее, если не сложно. Интересует, конкретно, получение всего url-а в переменную.
grechan Отправлено: 26 Октября, 2011 - 17:19:58 • Тема: информация после # (якоря) • Форум: Вопросы новичков

Ответов: 15
Просмотров: 870
caballero пишет:
сервер пережевывает то что до #
остальное пережевывает браузер

То есть, как я понял, теперь надо как-то попросить у браузера то, что мне надо?
А разных браузеров просить надо по-разному?
grechan Отправлено: 26 Октября, 2011 - 16:58:55 • Тема: информация после # (якоря) • Форум: Вопросы новичков

Ответов: 15
Просмотров: 870
Вот, что я имею в URL:http://site[dot]com/blank.php#access[dot][dot][dot]user_id=18548135 (все отображается именно так).
access_token мне надо выцепить.
То, что после # не передается я знаю, но данный "ответ" то формируется после формирования запроса и отправки его на сервер. Сервер его пережевывает и отвечает каким-то действием. Вопрос в том можно каким-либо способом выцепить эту инфу, до получения конечного ответа?
Может чо наворотил нетого?
grechan Отправлено: 26 Октября, 2011 - 16:20:11 • Тема: информация после # (якоря) • Форум: Вопросы новичков

Ответов: 15
Просмотров: 870
Сори, если повторяюсь, но ответ на своq вопрос не нашел поисковиком?...
Подскажите пожалуйста как при помощи php вытащить инфу после # из url? Это, по идее, элементы $_get[] - массива, и , как я понял, предназначені для Java.
Спасибо.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB