PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (1): [1]
Найдено сообщений: 10
grechan
Отправлено: 22 Января, 2013 - 09:41:27 • Тема: Zend Router • Форум: Объектно-ориентированное программирование
Ответов: 8 Просмотров: 2658
Разобрался в чем было дело - настройки роутера в конфигах
Поправил настройки роутера (application.ini)
PHP:
скопировать код в буфер обмена
resources. router. routes. id. type = "Zend_Controller_Router_Route_Regex"
resources. router. routes. id. route = "page/(\w+)"
resources. router. routes. id. defaults. module = default
resources. router. routes. id. defaults. controller = page
resources. router. routes. id. defaults. action = show
resources. router. routes. id. map. 1 = "id"
resources. router. routes. id. reverse = "page/%s "
маршрут устанавливаю так
PHP:
скопировать код в буфер обмена
$self = 'http://' . $_SERVER [ 'SERVER_NAME' ] ;
......
echo '<a href="' . $self . '/page/' . $result [ 'id' ] . '">' . $result [ 'name' ] . '</a></br>' ;
или
echo '<a href="' . $this -> url ( array ( 'controller' => 'page' , 'action' => $result [ 'id' ] ) ) . '">' . $result [ 'name' ] . '</a></br>' ;
получается такая вот ссылочка
page/1 или page/2 или page/3
grechan
Отправлено: 21 Января, 2013 - 16:57:41 • Тема: Zend Router • Форум: Объектно-ориентированное программирование
Ответов: 8 Просмотров: 2658
Помогите, знатоки Zend-а.
В конфигах прописываю
CODE (
htmlphp ):
скопировать код в буфер обмена
resources. router. routes. show. type = "Zend_Controller_Router_Route_Regex"
resources. router. routes. show. route = "page/(\w+)"
resources. router. routes. show. defaults. module = default
resources. router. routes. show. defaults. controller = "page"
resources. router. routes. show. defaults. action = "show"
resources. router. routes. show. map. 1 = "id"
resources. router. routes. show. reverse = "page/%s "
дальше
формирую сам маршрут (ссылку)
PHP:
скопировать код в буфер обмена
< a href= "'. $this->url (array('controller' => 'page', 'action' => 'show', 'id'=>$result ['id'])). '" > '.$result[' name'].' </ a>
Хочу получить ссылку вида 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 ):
скопировать код в буфер обмена
function uploadFile( file, url) {
var form = document.forms .myform ;
var formData = new FormData( form) ;
formData.append ( "myfile" , file) ;
var xhr = new XMLHttpRequest( ) ;
xhr.upload .addEventListener ( "progress" , function ( e) {
if ( e.lengthComputable ) {
var progress = ( e.loaded * 100) / e.total ;
/* ... обновляем инфу о процессе загрузки ... */
}
} , false ) ;
/*xhr.upload.addEventListener("loadstart", function(e) {
alert ("Загрузка началась");
}, false);*/
/* ... можно обрабатывать еще события load и error объекта xhr.upload ... */
xhr.onreadystatechange = function ( ) {
if ( this .readyState == 4) {
if ( this .status == 200 ) {
document.getElementById ( "status" ) .innerHTML = xhr.responseText ;
/* ... все ок! смотрим в this.responseText ... */
} else {
/* ... ошибка! ... */
}
}
} ;
var xhr = new XMLHttpRequest( ) ;
xhr.open ( "POST" , url) ;
xhr.send ( formData) ;
}
и вот так обрабатываю
PHP:
скопировать код в буфер обмена
$error = $_FILES [ 'myfile' ] [ 'error' ] ;
switch ( $error ) {
case 0 :
$error = 'файл загружен' ;
break ;
case 1 : case 2 :
$error = 'слишком большой файл' ;
break ;
case 3 :
$error = 'файл загружен частично' ;
break ;
case 4 :
$error = 'файл не был загружен' ;
}
echo $error . '</br>' ;
function transliterate_file( $st_transliterate_file )
{
$st_transliterate_file = strtr ( $st_transliterate_file , '' , '' ) ;
$st_transliterate_file = strtr ( $st_transliterate_file , array ( '0' => '0' , '1' => '1' , '2' => '2' , '3' => '3' , '4' => '4' , '5' => '5' , '6' => '6' , '7' => '7' , '8' => '8' , '9' => '9' , ' ' => '-' , '-' => '-' , '+' => '-' , '_' => '-' , '=' => '' , '*' => '' , '\\' => '' , '/' => '' , '(' => '' , ')' => '' , '[' => '' , ']' => '' , '{' => '' , '}' => '' , '<' => '' , '>' => '' , '.' => '' , ',' => '' , '\"' => '' , ':' => '' , ';' => '' , '!' => '' , '?' => '' , '№' => '' , '%' => '' , '$' => '' , '&' => '' , '#' => '' , '@' => '' ,
'а' => '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' ,
) ) ;
return $st_transliterate_file ;
}
if ( ! empty ( $_FILES [ 'myfile' ] [ 'name' ] ) ) {
$imx = imagesx ( $im ) ; //исходная ширина $newx_b = $imx ; //ширина
$newy_b = $imy ; //высота
$folder = $_SERVER [ 'DOCUMENT_ROOT' ] . '/temp/' ;
$folder_temp = '/temp/' ;
$file_name = $_FILES [ 'myfile' ] [ 'name' ] ;
$file_name_array = explode ( '.' , $file_name ) ; $file_name_array [ 0] = transliterate_file ( $file_name_array [ 0] ) ;
$file_name_array [ 0
] = strtolower ( $file_name_array [ 0
] ) ; $file_name_array [ 1
] = strtolower ( $file_name_array [ 1
] ) ; //Формируем название большого файла
$file_name = implode ( "." , $file_name_array ) ;
echo '$file_name' . $file_name ;
$canvas_b = imagecreatetruecolor ( $newx_b , $newy_b ) ; //новая чистая картинка (imagecreate, imagecreatetruecolor)
imagecopyresampled ( $canvas_b , $im , 0
, 0
, 0
, 0
, $newx_b , $newy_b , $imx , $imy ) ; //наложение изображений (imagecopy, imagecopyresized, imagecopyresampled)
//**************************************************************************************************
//Записываем файл
//**************************************************************************************************
$result = imagejpeg ( $canvas_b , $folder . $file_name ) ;
if ( $result == true )
{
echo 'Файл записан' ;
}
else
{
echo 'Файл не записан' ;
}
}
else
{
echo 'Файл не выбран' ;
}
?>
На выходе получилось:
выбор файлов, до их отправки на сервер - отображение в виде миниатюр, с которыми можно делать все, что угодно, а потом отправка их сервер.
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 ):
скопировать код в буфер обмена
function uploadFile( file, url) {
var reader = new FileReader( ) ;
reader.onload = function ( ) {
var xhr = new XMLHttpRequest( ) ;
xhr.upload .addEventListener ( "progress" , function ( e) {
if ( e.lengthComputable ) {
var progress = ( e.loaded * 100) / e.total ;
/* ... обновляем инфу о процессе загрузки ... */
}
} , false ) ;
if ( ! XMLHttpRequest.prototype .sendAsBinary ) {
XMLHttpRequest.prototype .sendAsBinary = function ( datastr) {
function byteValue( x) {
return x.charCodeAt ( 0) & 0xff;
}
var ords = Array.prototype .map .call ( datastr, byteValue) ;
var ui8a = new Uint8Array( ords) ;
this .send ( ui8a.buffer ) ;
}
}
/* ... можно обрабатывать еще события load и error объекта xhr.upload ... */
xhr.onreadystatechange = function ( ) {
if ( this .readyState == 4) {
if ( this .status == 200 ) {
document.getElementById ( "status" ) .innerHTML = xhr.responseText ;
/* ... все ок! смотрим в this.responseText ... */
} else {
/* ... ошибка! ... */
}
}
} ;
xhr.open ( "POST" , url) ;
var boundary = "xxxxxxxxx" ;
// Устанавливаем заголовки
xhr.setRequestHeader ( "Content-Type" , "multipart/form-data, boundary=" + boundary) ;
xhr.setRequestHeader ( "Cache-Control" , "no-cache" ) ;
// Формируем тело запроса
var body = "--" + boundary + "\r \n " ;
body += "Content-Disposition: form-data; name='myFile'; filename='" + file.name + "'\r \n " ;
body += "Content-Type: application/octet-stream\r \n \r \n " ;
body += reader.result + "\r \n " ;
body += "--" + boundary + "--" ;
xhr.send ( body) ;
/*if(xhr.sendAsBinary) {
// только для firefox
xhr.sendAsBinary(body);
} else {
// chrome (так гласит спецификация W3C)
xhr.send(body);
}*/
} ;
// Читаем файл
reader.readAsBinaryString ( file) ;
}
uploadAll.onclick = function ( )
{
var list= document.getElementsByTagName ( 'LI' ) [ 0] ;
uploadFile( list.file , "ajax.php" ) ;
}
, а вот этим обрабатываю
PHP:
скопировать код в буфер обмена
<?PHP
$error = $_FILES [ 'file' ] [ 'error' ] ;
switch ( $error ) {
case 0 :
$error = 'файл загружен' ;
break ;
case 1 : case 2 :
$error = 'слишком большой файл' ;
break ;
case 3 :
$error = 'файл загружен частично' ;
break ;
case 4 :
$error = 'файл не был загружен' ;
}
echo $error . '</br>' ;
if ( ! $im ) echo 'дело дрянь </br>' ;
$imx = imagesx ( $im ) ; //исходная ширина $newx_b = $imx ; //ширина
$newy_b = $imy ; //высота
$folder = $_SERVER [ 'DOCUMENT_ROOT' ] . '/temp/' ;
$file_name = $_FILES [ 'myFile' ] [ 'name' ] ;
$canvas_b = imagecreatetruecolor ( $newx_b , $newy_b ) ; //новая чистая картинка (imagecreate, imagecreatetruecolor)
imagecopyresampled ( $canvas_b , $im , 0
, 0
, 0
, 0
, $newx_b , $newy_b , $imx , $imy ) ; //наложение изображений (imagecopy, imagecopyresized, imagecopyresampled)
//**************************************************************************************************
//Записываем файл
//**************************************************************************************************
$result = imagejpeg ( $canvas_b , $folder . $file_name ) ;
if ( $result == true )
{
echo 'Файл записан' ;
}
else
{
echo 'Файл не записан' ;
}
?>
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 ExBB FM 1.0 RC1. InvisionExBB