Доброго вам времени суток. Прошел обучалку с официального сайта zendframework2 http://framework.zend.com/manual/2.0/en/user-guide/overview.html#. По окончании все работает, кроме одного. Если нажать edit редактирование альбома то выдает вот такую ошибку: An error occurred An error occurred during execution; please try again later. Additional information: Zend\Stdlib\Exception\BadMethodCallException File: D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Stdlib\Hydrator\ArraySerializable.php:29 Message: Zend\Stdlib\Hydrator\ArraySerializable::extract expects the provided object to implement getArrayCopy() Stack trace: #0 D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Form\Fieldset.php(585): Zend\Stdlib\Hydrator\ArraySerializable->extract(Object(Album\Model\Album)) #1 D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Form\Form.php(857): Zend\Form\Fieldset->extract() #2 D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Form\Form.php(292): Zend\Form\Form->extract() #3 D:\cod\test\zf2-tutorial\module\Album\src\Album\Controller\AlbumController.php(55): Zend\Form\Form->bind(Object(Album\Model\Album)) #4 D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractActionController.php(83): Album\Controller\AlbumController->editAction() #5 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent)) #6 D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) #7 D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #8 D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractController.php(117): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #9 D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Mvc\DispatchListener.php(114): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response)) #10 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent)) #11 D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) #12 D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #13 D:\cod\test\zf2-tutorial\vendor\zendframework\zendframework\library\Zend\Mvc\Application.php(309): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure)) #14 D:\cod\test\zf2-tutorial\public\index.php(17): Zend\Mvc\Application->run() #15 {main} искал в нете решение везде пишут что нужно проверить файлы global.php и local.php что бы были введены правильные данные для подключения к базе данных, но в них все норм. Подскажите плиз если кто знает в чем может быть проблема?
Я, наверное, не все понял. Однако попробуем: Чтобы удовлетворить условию парсинга переменой (а это по сути парсинг строки, в которой сепараторами служит все, кроме букв и цифр): PHP: $.ajax({ url: 'path/to/php_script', type: 'post', data: {myarray: <?php echo implode( '_', $words ); ?>} }); Соотвественно, обратиться в скрипте можно будет как PHP: $a = $_POST[ 'myarray' ] . "еще нужно все слова поместить по отдельности в эту конструкцию.": Если я правильно понял, то нужно перебрать все имеющиеся слова в цикле, подставляя их в строку. Например, http://ru2.php.net/manual/en/control-structures.foreach.php. P.S. А лучше подробнее опиши, что тебе нужно и что именно не выходит. Гарантию на верную расшифровку твоего поста я бы не дал.
I_I, В JS тебе нужно что-то вроде: Code: $( document ).ready( function() { $( 'textarea' ).keyup( function() { $.post( 'path/to/php/script', { req: $( 'textarea' ).val() } ).done(function( data ) { $( "#result" ).html( data ); }); } ); } ); Код писал без проверки, но, вроде, все норм. В PHP-скрипте нужно разобрать пришедшую строку $_POST[ 'req' ] (например, с помощью имеющегося preg_split), перебрать все получившиеся слова и считать файлы, им соответствующие, отдать пользователю. Возможно, имеет смысл изменить архитектуру программы, добавить работу с базой данных, например?
Спасибо, а можно ли этот файл useragents.txt пополнять строками через php скрипт ? допустим скрипт record.php читает файл useragents.txt и выводит его содержимое - напротив каждой строки выведеной из файла есть чекбокс - для удаления строки и в конце есть input type text - Для внесения в файл новой строки как можно добавить кнопку или чекбокс к строкам ? здесь так же не знаю как в регулярке разрешить кавычки, и другие символы встречающиеся в строке юзерагента любого, например: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; ja-jp) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27 PHP: <?php header('Content-Type: text/html; charset=utf-8'); if($_POST['submit']) { if(empty($_POST['name'])) exit('<h2>введи useragent</h2>'); if (!preg_match("#^[a-z0-9]+$#i", $_POST['name'])){ die('Разрешены только символы a-z и цифры'); } } $file = 'useragent.txt'; file_put_contents($file, $_POST['name']."\r\n", FILE_APPEND | LOCK_EX); $file = 'useragent.txt'; $arr = file($file); $count = count($arr); for ($i = 0; $i < $count; $i++) { echo htmlspecialchars($arr[$i]), '<br />'; } ?>
Помогите пожалуйста оптимизировать код и сделать красивее мне не нравиться использовать несколько раз, как можно это оптимизировать или переделать? Code: if (empty($error)) { вот часть кода PHP: if (empty($error)) { mysql_query("START TRANSACTION;"); $q = mysql_query("***"); if (mysql_affected_rows() == 0) { mysql_query("ROLLBACK"); $error = 13; } } if (empty($error)) { $q = mysql_query("***"); if (mysql_affected_rows() == 0) { mysql_query("ROLLBACK"); $error = 14; } } if (empty($error)) { $q = mysql_query("***"); if (mysql_affected_rows() == 1) { mysql_query("COMMIT;"); $id = mysql_insert_id(); } else { mysql_query("ROLLBACK"); $error = 15; } }
Хайлоу Накидайте скриптик. Есть файл ввида title Description Title Description title Description Title Description title Description Title Description Вообщем нужно парсить текстовик и разложить дескрипшоны и тайлты по разные файлы Ну вы поняли просто все в одном файле, первое идет тайтл второе дескрипшон и так весь файл. +
вот нашел скрипт для пинга ,но че то не работает,не принимает в введенный в форму ип адрес PHP: <?php //вот только добавил для отображении правильной кодировки header("Content-Type: text/html; charset=cp866"); //ping tool $ping_ip_addr = $_GET['Host']; $ping_count = $_GET['Count']; $ping_size = $_GET['Size']; //тут поправил *ping -с* так как использую скрипт для винды $result = explode("\n", `ping -n $ping_count $ping_size $ping_ip_addr `); print "<pre>"; foreach($result as $val) { print "$val<br>"; } print "</pre>"; ?> <font face="verdana" size="2"><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="GET"> IP Address: <input type="text" name="Host" /> Count: <input type="text" name="Count" value="5" /> Size: <input type="text" name="Size" value="32" /> <input type="submit" value="Ping Host" name="Submit" /> </form> во шо выдает Обмен пакетами с 0.0.0.32 по с 32 байтами данных: PING: сбой передачи. General failure. PING: сбой передачи. General failure. PING: сбой передачи. General failure. PING: сбой передачи. General failure. PING: сбой передачи. General failure. Статистика Ping для 0.0.0.32: Пакетов: отправлено = 5, получено = 0, потеряно = 5 уж очень хочется делать все не выходя из браузера даже пинг, во всяком случае пока не разочаровался в магии PHP .
PHP: <?php $originalData = file( 'orig.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES ); $fpTitles = fopen( 'title.txt', 'w+' ); $fpDescs = fopen( 'descs.txt', 'w+' ); for ( $i = 0; $i < count( $originalData ); ++$i ) { if ( $i % 2 == 0 ) { fwrite( $fpTitles, $originalData[ $i ] . "\r\n" ); } else { fwrite( $fpDescs, $originalData[ $i ] . "\r\n" ); } } fclose( $fpTitles ); fclose( $fpDescs ); ?> In: orig.txt Out: titles.txt & descs.txt
PHP не причем. 9 строчку меняем на : PHP: $result = explode("\n", `ping -n $ping_count -l $ping_size $ping_ip_addr `); Забыл указать параметр "-l" перед размером буфера отправки
Доброго времени суток. Подскажите пожалуйста, настроил виртуальные хосты в zend server по инструкции. Только почему-то хосты работают только в mozilla. Во всех других браузерах при вводе в адресную строку адреса выдает это: Forbidden You don't have permission to access / on this server. Может кто нибудь знает в чем проблема?
как сделать что бы каждая строка была всегда с новой строки ? у меня получилось так - что если я закрою вкладку - то заного открыв скрипт добавляется строка через строку, как убрать это ? PHP: <?php header('Content-Type: text/html; charset=utf-8'); if($_POST['submit']) { if(empty($_POST['name'])) exit('<h2>введи useragent</h2>'); } $file = 'data.txt'; file_put_contents($file, $_POST['name']."\r\n", FILE_APPEND | LOCK_EX); $file = 'data.txt'; $arr = file($file); $count = count($arr); for ($i = 0; $i < $count; $i++) { echo htmlspecialchars($arr[$i]), '<br />'; } ?> php header location redirect 404 как сделать редирект что бы отдавался код 404? PHP: header('HTTP/1.1 404 Not Found'); header('Status: 404 Not Found'); header( 'Location: '.$redirekt, true, 302); если так делаю, то всё равно 302 отдает если вместо 302 ставлю 404 то не редиректит вообще PHP: header('HTTP/1.1 404 Not Found'); header('Status: 404 Not Found'); header( 'Location: '.$redirekt); в этом варианте всё равно 302 отдаётся, нужно сделать редирект перенаправив куда нибудь но при этом что бы код отдавался 404 а не 302 хочу фиксировать логи одной страницы, сначала идёт авторизация - которая переадресовывает на нужную мне струницу, создаётся сессия авторизации. на странице код записи лога фиксирует каждое обновление страницы и пишет те же данные. нужно что бы он записал один раз данные и с этой сессией и не записывал того же посетителя в лог если он обновляет страницу помогите пожалуйста с реализацией? монироринг сайта на php раньше метрика яндекс показывала Ip посетителя а теперь они ip и useragent не показывают. чем можно фиксировать хождения по сайту ? раньше метрика яндекса помогала понять кто где шарит на сайте для дальнейшей фильтрации и блокировки, а теперь они информацию о ip не показывают. чем можно альтернативно мониторить ip и юзерагенты, может есть лёгкий самопал, который назначит сессию и будет фиксировать кто на какие страницы лазил и сколько там был ? чем можно фиксировать такие значения, с учётом что посетитель пожет перемещаться за раз по нескольку страниц на сайте, и обычным сниффером это мало фильтровать, что можете простое но эффективное предложить ? есть ли простенькие скрипты или что то самому написать ?
Добрый день. прошу помощи данный скрипт берет название файлов из ИН ТХТ ищет файлики в папке и если находит то копирует в другую На денвере выдает ошибку Z:\home\test1.ru\www/foto failed to open dir: No such file or directory как обойти все это - прошу помочь Благодарю Code: <?php header('content-type: text/html; charset=UTF-8'); // прописываем пути к файлам define('CATALOG_ROOT',dirname(__FILE__).'/'); // Корневой каталог define('IN_FILE_NAME',CATALOG_ROOT.'in.txt'); // путь к файлу входящих данных define('RESULT_FILE_NAME',CATALOG_ROOT.'result.txt'); // путь в файлу результата define('INIT_DIR_FOR_DELETE',CATALOG_ROOT.'foto'); function getInFile() { // создаем массив путей файлов $files if (is_file(IN_FILE_NAME)) $files = array_map("trim",file(IN_FILE_NAME)); else { echo 'Отсутствует файл по '.IN_FILE_NAME; exit; } return $files; } function saveInFile() { $files = getInFile(); if (!count($files)) { echo 'Нет значений в файле in.txt'; exit; } // проверка на сущуствование файлов $result = array(); for ($i=0;$i<count($files);$i++) if (file_exists(CATALOG_ROOT.$files[$i])) $result[$i] = $files[$i]; else $result[$i] = 'delete'; // построчное сохранение в файл $f = fopen(RESULT_FILE_NAME, "w"); if ($f) foreach ($result as $line) fwrite($f, $line."\r\n"); else echo 'Файл не может быть создан по '.RESULT_FILE_NAME.'Проверьте права доступа каталога.'; fclose($f); } function rdir ($path2dir) { $d = dir ($path2dir); while (false !== ($entry = $d->read())) { if ($entry!='.' && $entry!='..' && $entry!='' ) { $all_path = $path2dir.$entry; $new_path = go ($all_path, is_file($all_path)); if (!is_file($all_path)) { if (!rdir ($new_path)) { return false; } } } } return true; } function go ($path2file, $is_file = true) { if ($is_file) { global $files, $for_delete; $is_in_infile = 0; foreach ($files as $k=>$v) if (CATALOG_ROOT.$v == $path2file) { $is_in_infile = 1; //echo CATALOG_ROOT.$v.' <b>is in in.txt</b><br>'; $new = CATALOG_ROOT.'in/'.str_replace(INIT_DIR_FOR_DELETE,'',$path2file); //$new = CATALOG_ROOT.'in'.str_replace(dirname($v),'',$v); if (!copy($path2file,$new)) { echo "не удалось скопировать $v в $new<br>"; } else echo "$v <b>скопирован</b><br>"; unset($files[$k]); break; } if (!$is_in_infile) $for_delete[] = $path2file; } else { $path2file = $path2file.'/new'; $newdir = CATALOG_ROOT.'in/'.str_replace(INIT_DIR_FOR_DELETE,'',$path2file); if (!file_exists($newdir)) mkdir($newdir); } return $path2file; } function delete() { global $for_delete; foreach ($for_delete as $v) { //unlink($v); } } $files = getInFile(); $for_delete = array(); # непосредственно вызываем функцию if (rdir (INIT_DIR_FOR_DELETE)) { delete(); } ?>
PHP: <?php header('Content-Type: text/html; charset=utf-8'); if(isset($_GET['submit'])) { if(is_array($_GET['name']) || empty($_GET['name'])) exit('<h2>введи useragent</h2>'); $file = 'data.txt'; file_put_contents($file, $_GET['name']."\r\n", FILE_APPEND | LOCK_EX); } $file = 'data.txt'; if(file_exists($file)) { $arr = array_map('trim', file($file)); foreach ($arr as $str) echo htmlspecialchars($str) . '<br />'; }
Здравствуйте! Есть такой код что при открытие письмо было перенаправления какого нибудь сайта? Открою письмо и автоматически перенаправляю на сайт google.ru
мб в списке лишнее пробелы есть после строк с юзерагентами, я бы лучше перебирал список циклом сравнивал юзерагент в списке после обработки trim()
пробелов нет, всё идёт построчно, в таком виде: PS юзерагенты в файл были добавлены автоматически, и в конце пробелов не было перекидывает на: PHP: header( 'Location: '.$url, true, 302);