PHP.SU

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

Страниц (81): В начало « ... 45 46 47 48 [49] 50 51 52 53 ... » В конец

> Найдено сообщений: 1209
evgenijj Отправлено: 07 Июля, 2007 - 20:51:49 • Тема: Связанные списки • Форум: Пользовательские функции

Ответов: 0
Просмотров: 670
Вы заходите на сайт автосалона и хотите выбрать машину и вы уже знаете какая модель и какого цвета вам нужна. Естественно, что не все сочетания моделей и цветов есть в наличии. Поэтому, будет гораздо удобнее, выбрав модель машины в одном списке, сразу же посмотреть имеющиеся в наличии цвета данной модели.
Файл list.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <head>
  3. <title>Связанные списки</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
  5. <style type="text/css">
  6.         fieldset{ width:10em; display:block; padding:.5em }
  7.         select{ width:10em }
  8. </style>
  9. < script type="text/javascript">
  10. // Функция, осуществляющая AJAX запрос.
  11. function loadXMLDoc(method,url){
  12.     if(window.XMLHttpRequest){
  13.         req = new XMLHttpRequest();
  14.         req.onreadystatechange = processReqChange;
  15.         req.open(method, url, true);
  16.         req.send(null);
  17.     }else if(window.ActiveXObject){
  18.         req = new ActiveXObject("Microsoft.XMLHTTP");
  19.         req.onreadystatechange = processReqChange;
  20.         req.open(method, url, true);
  21.         req.send();
  22.     }
  23. }
  24. // Функция, выполняемая при изменении статуса
  25. // запроса, если статус  равен 200, данные получены.
  26. function processReqChange(){
  27.     if(req.readyState == 4){
  28.         if(req.status == 200){
  29.                         getColors(req.responseXML.documentElement);
  30.         }else{
  31.             alert("There was a problem retrieving the XML data:n" + req.statusText);
  32.         }
  33.     }
  34. }
  35. function onChange(_this) {
  36.         var url = "ajax.php?models="+_this.value;
  37.         loadXMLDoc("get",url);
  38. }
  39. function getColors(xml){
  40.         var colors = xml.getElementsByTagName("color");
  41.         var _select = document.getElementById("colors");
  42.         _select.innerHTML = ""; // Удаляем всех потомков.
  43.         // Создаем список с доступными цветами.
  44.         for(i=0; i<colors.length; i++) {
  45.                 var option = document.createElement("option");
  46.                 var optionText = document.createTextNode(colors[i].firstChild.data);
  47.                 option.appendChild(optionText);
  48.                 option.setAttribute("value",colors[i].getAttribute("value"));
  49.                 _select.appendChild(option);
  50.         }
  51. }
  52. </script>
  53. </head>
  54. <body>
  55. <?PHP
  56.         // Проверка, пришли ли данные из формы.
  57.         if( isset($_GET["models"]) ){
  58.                 // Как бы выборка из базы данных.
  59.                 $colorsArray = array(
  60.                         "BentleyAzure" => array("red"=>"Красный", "green"=>"Зеленый"),
  61.                         "ChevroletCorvette" => array("black"=>"Черный", "blue"=>"Синий"),
  62.                         "FerrariEnzo" => array("green"=>"Зеленый", "black"=>"Черный", "yellow"=>"Желтый")
  63.                 );
  64.                 $colors = $colorsArray[$_GET["models"]];
  65.                 // Проверка на доступность модели этого цвета.
  66.                 if( array_key_exists($_GET["colors"], $colors) ){
  67.                         echo '<h3 style="color:#090">Модель такого цвета есть в наличии</h3>';
  68.                 }else{
  69.                         echo '<h3 style="color:#900">Модель такого цвета отсутствует</h3>';
  70.                 }
  71.         }
  72. ?>
  73. <form action="list.php" method="get">
  74. <fieldset>
  75. <legend><label for="models">Модели</label></legend>
  76. <select id="models" name="models" onchange="onChange(this)">
  77.         <option value="BentleyAzure" selected>Bentley Azure</option>
  78.         <option value="ChevroletCorvette">Chevrolet Corvette</option>
  79.         <option value="FerrariEnzo">Ferrari Enzo</option>
  80. </select>
  81. </fieldset>
  82. <fieldset>
  83. <legend><label for="colors">Цвета</label></legend>
  84. <select id="colors" name="colors">
  85.         <option value="red">Красный</option>
  86.         <option value="black">Черный</option>
  87.         <option value="green">Зеленый</option>
  88.         <option value="blue">Синий</option>
  89.         <option value="yellow">Желтый</option>
  90. </select>
  91. </fieldset>
  92. <fieldset>
  93.         <input type="submit" value="Выбрать" />
  94. </fieldset>
  95. </form>
  96. </body>
  97.  

Файл ajax.php - небольшой PHP скрипт, отдающий по AJAX запросу доступные цвета машин в формате XML.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. header('Content-Type: text/xml; charset=windows-1251');
  4. $request = $_GET["models"];
  5. if($request){
  6.         echo loadData($request);
  7. }
  8. function loadData($request){
  9.         // Функция, как бы делающая выборку из базы данных
  10.         if($request == "BentleyAzure"){
  11.                 $result = '<color value="red">Красный</color><color value="green">Зеленый</color>';
  12.         }elseif($request == "ChevroletCorvette"){
  13.                 $result = '<color value="black">Черный</color><color value="blue">Синий</color>';
  14.         }elseif($request == "FerrariEnzo"){
  15.                 $result = '<color value="green">Зеленый</color><color value="black">Черный</color>
  16.                                    <color value="yellow">Желтый</color>';
  17.         }
  18.         if($result) return $result = '<?xml version="1.0" encoding="windows-1251"?>
  19.                                                                   <colors>'.$result.'</colors>';
  20. }
  21. ?>
  22.  
evgenijj Отправлено: 07 Июля, 2007 - 17:34:38 • Тема: Скрывающийся контекст • Форум: JavaScript & VBScript

Ответов: 7
Просмотров: 4960
Все хорошо, есть только одно НО
PHP:
скопировать код в буфер обмена
  1.  
  2. <div id="DivMLinks" style="display:none">      
  3.     <a class="blok">
  4.         <li class="MLI MLIf"><a href="http://genweb.ru/">раскруток продвижение сайтов</a></li>
  5.         <li class="MLI"><a href="http://www.maximuscc.com.ua/">евроремонтом</a></li>
  6.         <li class="MLI"><a href="http://www.azazellostyle.ru/">классное постельное белье</a></li>
  7.         <li class="MLI"><a href="http://www.elite-replica.ru/">ювелирные украшения tiffany co</a></li>
  8.         <li class="MLI"><a href="http://www.moscow-gruzchik.ru/">квартирный переезд, грузчики выходные</a></li>
  9.         <li class="MLI"><a href="http://www.batavia.ru/">авиабилеты израиль</a></li>
  10.         <li class="MLI"><a href="http://www.agentavia.ru/">авиабилетам</a></li>
  11.         <li class="MLI"><a href="http://www.leader-comp.ru/">настройка компьютеров</a></li>
  12.         <li class="MLI MLIl"><a href="http://www.directvision.ru/">разработка wap сайтов</a></li>
  13.     </a>
  14. </div>
  15.  

Зачем здесь элемент < a class="blok"> ?
evgenijj Отправлено: 07 Июля, 2007 - 13:10:18 • Тема: Ошибка при обращении к базе данных • Форум: SQL и Архитектура БД

Ответов: 15
Просмотров: 330
Mister пишет:
Мне кажется проблема с запросом

Ну так выполни запрос из командной строки или через phpmyadmin. тебе не просто так ссылку привели
http://phpfaq[dot]ru/debug
Цитата:

При возникновении проблем с функциями mysql (supplied argument is not a valid MySQL result resource) под строкой, где произошла ошибка, обязательно надо вывести на экран mysql_error() и сам запрос
................................ ..................
SQL запрос - это СТРОКА. Вы должны себе чётко представлять, какой запрос получится в результате вашего хитроумного пхп-кода! Сервер БД не понимает конструкций intval, date, mktime и так далее! Это всё пхп-код. Результатом которого будет являться строка корректного SQL запроса. прежде, чем писать пхп код, вы должны ЧЁТКО СЕБЕ ПРЕДСТАВЛЯТЬ, КАК ДОЛЖЕН ВЫГЛЯДЕТЬ SQL ЗАПРОС В РЕЗУЛЬТАТЕ!
evgenijj Отправлено: 07 Июля, 2007 - 12:59:08 • Тема: Скрывающийся контекст • Форум: JavaScript & VBScript

Ответов: 7
Просмотров: 4960
http://forum.php.su/topic.php?fo...m=40&topic=8

Да, и главное
http://htmlbook[dot]ru/css/display[dot]html
evgenijj Отправлено: 07 Июля, 2007 - 12:54:39 • Тема: Ошибка при обращении к базе данных • Форум: SQL и Архитектура БД

Ответов: 15
Просмотров: 330
А почему имя БД и пользователя БД - пустая строка?
Сообщение об ошибке переводится примерно так:
mysql_num_rows() - переданный аргумент не является корректным результатом запроса к БД
evgenijj Отправлено: 07 Июля, 2007 - 12:36:07 • Тема: Расшифровка MD5 • Форум: Программирование на PHP

Ответов: 11
Просмотров: 7979
М.Кузнецов, И.Симдянов
"Головоломки на PHP"

Подбор пароля по словарю
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.   // Устанавливаем не ограниченное время выполнения скрипта
  4.  
  5.   // Читаем пароли из файла password
  6.   $pass = file("password");
  7.   foreach($pass as $password)
  8.   {
  9.     // Замеряем время, затраченное на подбор пароля
  10.     $begin = time();
  11.     echo decrypt_md5(trim($password));
  12.     $end = time();
  13.     echo "  (на подбор затрачено ".($end - $begin)." секунд) <br/>";
  14.   }
  15.  
  16.   // Функция посимвольного перебора пароля
  17.   // $pass - расшифровываемый пароль
  18.   // $answer - текущий ответ, при первом вызове - пустая строка
  19.   function decrypt_md5($pass)
  20.   {
  21.     // Переносим содержимое словаря в массив
  22.     $dict = file("words.txt");
  23.     // В цикле подбираем пароль
  24.     foreach($dict as $word)
  25.     {
  26.       if(md5(trim($word)) == $pass) return $temp;
  27.     }
  28.   }
  29. ?>
  30.  

Файл password
PHP:
скопировать код в буфер обмена
  1.  
  2. ee11cbb19052e40b07aac0ca060c23ee
  3. dd97813dd40be87559aaefed642c3fbb
  4. 8dbc672497bdc46f88e864bb1121232c
  5. 3e10f8c809242d3a0f94c18e7addb866
  6.  
evgenijj Отправлено: 06 Июля, 2007 - 21:44:41 • Тема: Загружаемый внешний контент средствами java ... • Форум: JavaScript & VBScript

Ответов: 25
Просмотров: 13497
Тогда не знаю, чем тебе помочь.
Цитата:

allow_url_fopen boolean

Данная директива включает поддержку упаковщиков URL (URL wrappers), которые позволяют работать с объектами URL, как с обычными файлами.

Замечание: Эта настройка может быть установлена только в php.ini из соображений безопасности.
evgenijj Отправлено: 06 Июля, 2007 - 21:28:37 • Тема: Загружаемый внешний контент средствами java ... • Форум: JavaScript & VBScript

Ответов: 25
Просмотров: 13497
Я проверял работу скрипта - все работает без проблем. Возможно , проблема в этом
http://php.su/functions/?cat=fil....allow-url-fopen

И еще - у тебя стоят пробелы < script ... между "<" и "script". Это ошибка. И экранирования кавычек нет
PHP:
скопировать код в буфер обмена
  1.  
  2. $script = str_replace("'<a href=\\"http://www.tak.ru\\" class=\\"takru\\"><b>Оплаченная Реклама:</b></a>'+", "", $script);
  3.  


Блин, с показом исходных кодов на этом форуме серьезные проблемы. Приходится постоянно что-то придумывать. И это на форуме программистов. Где только ARTY откопал это г...
evgenijj Отправлено: 06 Июля, 2007 - 20:34:59 • Тема: Раскодировка скрипта на php • Форум: Программирование на PHP

Ответов: 3
Просмотров: 377
Я не понял - тебе надо просто посмотреть результат работы скрипта? Тогда просто установи Zend и запусти скрипт.

Если же ты хочешь посмотреть исходные коды зашифрованного файла - $6
http://www[dot]qinvent[dot]com/cyrj/deZe[dot][dot][dot]der/index-en.php
Я этим никогда не пользовался - так что если ничего не выйдет - претензий не предъявлять Улыбка
evgenijj Отправлено: 06 Июля, 2007 - 20:17:43 • Тема: Раскодировка скрипта на php • Форум: Программирование на PHP

Ответов: 3
Просмотров: 377
Знаешь, скрипты шифруют не для того, чтобы любой желающий мог их легко раскодировать. Если их и можно раскодировать, то затраты на это будут слишком велики - овчинка выделки не стоит.
evgenijj Отправлено: 06 Июля, 2007 - 15:37:19 • Тема: function mailto(); не могу найти ошибку помогите Пожалуйста • Форум: Программирование на PHP

Ответов: 6
Просмотров: 630
Ну если ты хочешь тестировать скрипт отправки почты на локальном компьютере - надо установить почтовый сервер.

http://forum.php.su/topic.php?fo...=1&topic=278
evgenijj Отправлено: 06 Июля, 2007 - 11:27:20 • Тема: лучший анекдот • Форум: Корзина

Ответов: 28
Просмотров: 14199
- Алло! Это системный администратор? Что у нас с серверами?
- Они грузятся.
- А побыстрее нельзя?
- Можно. Сейчас подключу ещё грузчиков.
-------------------------------- ---------------------------
Работа программиста и шамана имеет много общего - оба бормочут
непонятные слова, совершают непонятные действия и не могут
объяснить, как оно работает.
-------------------------------- ---------------------------
Открыта новая радиостанция для юзеров под названием RТ FМ.
По ней будут транслироваться чтения различных мануалов и ответы
на часто задаваемые вопросы.
-------------------------------- ---------------------------
Появился новый компьютерный вирус - "бомж"!
Он просто постоянно роется в Корзине...
-------------------------------- ---------------------------
Программист - это человек, который решает способом, который вы
не понимаете, проблемы, о которых вы даже не подозревали...
-------------------------------- ---------------------------
Прибегает Дьявол к Богу и говорит:
- Бог забери от меня этого программиста!
- А что он опять натворил?
- Отобрал у беса вилы, переколол всех чертей, и бегает, ищет
выход на следующий уровень!!!
evgenijj Отправлено: 05 Июля, 2007 - 20:58:16 • Тема: Загружаемый внешний контент средствами java ... • Форум: JavaScript & VBScript

Ответов: 25
Просмотров: 13497
Да дело-то нехитрое. Где-то в в твоем скрипте есть строка
PHP:
скопировать код в буфер обмена
  1.  
  2. echo '< script language="JavaScript" src="http://s18.takru.com/in.php?id=40921"></script>';
  3.  


Заходим по адресу
http://s18[dot]takru[dot]com/in.php?id=40921
и видим, какой JavaScript генерирует php-скрипт
PHP:
скопировать код в буфер обмена
  1.  
  2. document.writeln('<a href="http://www.tak.ru" class="takru"><b>Оплаченная Реклама:</b></a>'+
  3. '
  4. <a href="http://tak.ru/clicks.php?key=811174191697987434845431151213168" class="takru" target=_top>Новая методика заработка в Интерне..</a>
  5. <a href="http://tak.ru/clicks.php?key=117171185689997424835421171273170" class="takru" target=_top>Работа в Интернет. Заработок до $5..</a>
  6. <a href="http://tak.ru/clicks.php?key=610180116634917414825441111213140" class="takru" target=_top>Заработок в сети. До 180 долларов ..</a>
  7. <a href="http://tak.ru/clicks.php?key=015187127621907444855431141283152" class="takru" target=_top>Заработок на эконмии бензина.</a>
  8. <a href="http://tak.ru/clicks.php?key=916171187603967464845471151233159" class="takru" target=_top>Заработай много WMZ. Быстро, прове..</a>
  9. <a href="http://tak.ru/clicks.php?key=514166198619957454825421181263171" class="takru" target=_top>Сайт знакомств. Реальные фотографи..</a>
  10. <a href="http://tak.ru/clicks.php?key=413165139618957484825471191273165" class="takru" target=_top>Крутая мобила всего за 20$!</a>
  11. <a href="http://tak.ru/clicks.php?key=513179192606967474875471161263175" class="takru" target=_top>раскрутка сайтов для взрослых</a>
  12. <a href="http://tak.ru/clicks.php?key=016164192685987474835461141223166" class="takru" target=_top>доход 300$ каждый день.</a>
  13. <a href="http://tak.ru/clicks.php?key=311164100673987404875421121243155" class="takru" target=_top>Бесплатная рассылка по заработку в..</a>
  14. <a href="http://tak.ru/clicks.php?key=417177148603997444875411181243170" class="takru" target=_top>Заработай на обмене с e-gold на WM..</a>
  15. <a href="http://tak.ru/clicks.php?key=714176143685907404855421191203160" class="takru" target=_top>3000$ в месяц или  2.6% в сутки</a>
  16. <a href="http://tak.ru/clicks.php?key=911181109613927404865421181253151" class="takru" target=_top>Заработай 150$-400$ Wmz за сутки!</a>
  17. <a href="http://tak.ru/clicks.php?key=010172124654997404815461161253156" class="takru" target=_top>Биокатализатор топлива PowerPlusMP..</a>
  18. <a href="http://tak.ru/clicks.php?key=112170192620967484835401141273154" class="takru" target=_top>Красивые визитки по разумным ценам..</a>
  19. <a href="http://tak.ru/clicks.php?key=610171197660987424825431101283152" class="takru" target=_top>Заработай в сети до 3000$</a>
  20. <a href="http://tak.ru/clicks.php?key=312182121654927484825461151203149" class="takru" target=_top>Инженер-проектировщик ВК (по совме..</a>
  21. <a href="http://tak.ru/clicks.php?key=315170171664927464895471151283160" class="takru" target=_top>Идеи Малого Бизнеса</a>
  22. <a href="http://tak.ru/clicks.php?key=118182120608997454865471171203166" class="takru" target=_top>аксессуары для сотовых</a>
  23. <a href="http://tak.ru/clicks.php?key=614172164644977474825431111243154" class="takru" target=_top>Как раскрутить сайт новичку? Легко..</a>'+
  24. '');
  25.  

А теперь немного меняем твой php-скрипт
PHP:
скопировать код в буфер обмена
  1.  
  2. $script = file_get_contents("http://s18.takru.com/in.php?id=40921");
  3. $script = str_replace("<b>Оплаченная Реклама:</b>", "", $script);
  4. echo '< script language="JavaScript">'.$script.'</script>';
  5.  


P.S. А что скажет на это рекламодатель?

Да, еще не заметил - что это ссылка. Так что нужно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $script = str_replace("'<a href=\\"http://www.tak.ru\\" class=\\"takru\\"><b>Оплаченная Реклама:</b></a>'+", "", $script);
  3.  
evgenijj Отправлено: 05 Июля, 2007 - 20:35:10 • Тема: Класс для работы с zip-архивами • Форум: Пользовательские функции

Ответов: 22
Просмотров: 7322
http://www.phpclasses[dot]org/browse[dot][dot][dot]ackage/2322[dot]html
Класс позволяет создавать zip-файлы с иерархией папок
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. /**
  5.  * Class to dynamically create a zip file (archive)
  6.  *
  7.  * @author Rochak Chauhan
  8.  */
  9.  
  10. class createZip  {  
  11.  
  12.         public $compressedData = array();
  13.         public $centralDirectory = array(); // central directory  
  14.         public $endOfCentralDirectory = "\\x50\\x4b\\x05\\x06\\x00\\x00\\x00\\x00"; //end of Central directory record
  15.         public $oldOffset = 0;
  16.  
  17.         /**
  18.          * Function to create the directory where the file(s) will be unzipped
  19.          *
  20.          * @param $directoryName string
  21.          *
  22.          */
  23.        
  24.         public function addDirectory($directoryName) {
  25.                 $directoryName = str_replace("\\\\", "/", $directoryName);  
  26.  
  27.                 $feedArrayRow = "\\x50\\x4b\\x03\\x04";
  28.                 $feedArrayRow .= "\\x0a\\x00";    
  29.                 $feedArrayRow .= "\\x00\\x00";    
  30.                 $feedArrayRow .= "\\x00\\x00";    
  31.                 $feedArrayRow .= "\\x00\\x00\\x00\\x00";
  32.  
  33.                 $feedArrayRow .= pack("V",0);
  34.                 $feedArrayRow .= pack("V",0);
  35.                 $feedArrayRow .= pack("V",0);
  36.                 $feedArrayRow .= pack("v", strlen($directoryName) );
  37.                 $feedArrayRow .= pack("v", 0 );
  38.                 $feedArrayRow .= $directoryName;  
  39.  
  40.                 $feedArrayRow .= pack("V",0);
  41.                 $feedArrayRow .= pack("V",0);
  42.                 $feedArrayRow .= pack("V",0);
  43.  
  44.                 $this -> compressedData[] = $feedArrayRow;
  45.                
  46.                 $newOffset = strlen(implode("", $this->compressedData));
  47.  
  48.                 $addCentralRecord = "\\x50\\x4b\\x01\\x02";
  49.                 $addCentralRecord .="\\x00\\x00";    
  50.                 $addCentralRecord .="\\x0a\\x00";    
  51.                 $addCentralRecord .="\\x00\\x00";    
  52.                 $addCentralRecord .="\\x00\\x00";    
  53.                 $addCentralRecord .="\\x00\\x00\\x00\\x00";
  54.                 $addCentralRecord .= pack("V",0);
  55.                 $addCentralRecord .= pack("V",0);
  56.                 $addCentralRecord .= pack("V",0);
  57.                 $addCentralRecord .= pack("v", strlen($directoryName) );
  58.                 $addCentralRecord .= pack("v", 0 );
  59.                 $addCentralRecord .= pack("v", 0 );
  60.                 $addCentralRecord .= pack("v", 0 );
  61.                 $addCentralRecord .= pack("v", 0 );
  62.                 $ext = "\\x00\\x00\\x10\\x00";
  63.                 $ext = "\\xff\\xff\\xff\\xff";  
  64.                 $addCentralRecord .= pack("V", 16 );
  65.  
  66.                 $addCentralRecord .= pack("V", $this -> oldOffset );
  67.                 $this -> oldOffset = $newOffset;
  68.  
  69.                 $addCentralRecord .= $directoryName;  
  70.  
  71.                 $this -> centralDirectory[] = $addCentralRecord;  
  72.         }        
  73.        
  74.         /**
  75.          * Function to add file(s) to the specified directory in the archive
  76.          *
  77.          * @param $directoryName string
  78.          *
  79.          */
  80.        
  81.         public function addFile($data, $directoryName)   {
  82.  
  83.                 $directoryName = str_replace("\\\\", "/", $directoryName);  
  84.        
  85.                 $feedArrayRow = "\\x50\\x4b\\x03\\x04";
  86.                 $feedArrayRow .= "\\x14\\x00";    
  87.                 $feedArrayRow .= "\\x00\\x00";    
  88.                 $feedArrayRow .= "\\x08\\x00";    
  89.                 $feedArrayRow .= "\\x00\\x00\\x00\\x00";
  90.  
  91.                 $uncompressedLength = strlen($data);  
  92.                 $compression = crc32($data);  
  93.                 $gzCompressedData = gzcompress($data);  
  94.                 $gzCompressedData = substr( substr($gzCompressedData, 0, strlen($gzCompressedData) - 4), 2);
  95.                 $compressedLength = strlen($gzCompressedData);  
  96.                 $feedArrayRow .= pack("V",$compression);
  97.                 $feedArrayRow .= pack("V",$compressedLength);
  98.                 $feedArrayRow .= pack("V",$uncompressedLength);
  99.                 $feedArrayRow .= pack("v", strlen($directoryName) );
  100.                 $feedArrayRow .= pack("v", 0 );
  101.                 $feedArrayRow .= $directoryName;  
  102.  
  103.                 $feedArrayRow .= $gzCompressedData;  
  104.  
  105.                 $feedArrayRow .= pack("V",$compression);
  106.                 $feedArrayRow .= pack("V",$compressedLength);
  107.                 $feedArrayRow .= pack("V",$uncompressedLength);
  108.  
  109.                 $this -> compressedData[] = $feedArrayRow;
  110.  
  111.                 $newOffset = strlen(implode("", $this->compressedData));
  112.  
  113.                 $addCentralRecord = "\\x50\\x4b\\x01\\x02";
  114.                 $addCentralRecord .="\\x00\\x00";    
  115.                 $addCentralRecord .="\\x14\\x00";    
  116.                 $addCentralRecord .="\\x00\\x00";    
  117.                 $addCentralRecord .="\\x08\\x00";    
  118.                 $addCentralRecord .="\\x00\\x00\\x00\\x00";
  119.                 $addCentralRecord .= pack("V",$compression);
  120.                 $addCentralRecord .= pack("V",$compressedLength);
  121.                 $addCentralRecord .= pack("V",$uncompressedLength);
  122.                 $addCentralRecord .= pack("v", strlen($directoryName) );
  123.                 $addCentralRecord .= pack("v", 0 );
  124.                 $addCentralRecord .= pack("v", 0 );
  125.                 $addCentralRecord .= pack("v", 0 );
  126.                 $addCentralRecord .= pack("v", 0 );
  127.                 $addCentralRecord .= pack("V", 32 );
  128.  
  129.                 $addCentralRecord .= pack("V", $this -> oldOffset );
  130.                 $this -> oldOffset = $newOffset;
  131.  
  132.                 $addCentralRecord .= $directoryName;  
  133.  
  134.                 $this -> centralDirectory[] = $addCentralRecord;  
  135.         }
  136.  
  137.         /**
  138.          * Fucntion to return the zip file
  139.          *
  140.          * @return zipfile (archive)
  141.          */
  142.  
  143.         public function getZippedfile() {
  144.  
  145.                 $data = implode("", $this -> compressedData);  
  146.                 $controlDirectory = implode("", $this -> centralDirectory);  
  147.  
  148.                 return  
  149.                         $data.  
  150.                         $controlDirectory.  
  151.                         $this -> endOfCentralDirectory.  
  152.                         pack("v", sizeof($this -> centralDirectory)).    
  153.                         pack("v", sizeof($this -> centralDirectory)).    
  154.                         pack("V", strlen($controlDirectory)).            
  155.                         pack("V", strlen($data)).                
  156.                         "\\x00\\x00";                            
  157.         }
  158.  
  159.         /**
  160.          *
  161.          * Function to force the download of the archive as soon as it is created
  162.          *
  163.          * @param archiveName string - name of the created archive file
  164.          */
  165.  
  166.         public function forceDownload($archiveName) {
  167.                 $headerInfo = '';
  168.                  
  169.                 if(ini_get('zlib.output_compression')) {
  170.                         ini_set('zlib.output_compression', 'Off');
  171.                 }
  172.  
  173.                 // Security checks
  174.                 if( $archiveName == "" ) {
  175.                         echo "<html><title>Public Photo Directory - Download </title><body><BR><B>ERROR:</B> The download file was NOT SPECIFIED.</body></html>";
  176.                         exit;
  177.                 }
  178.                 elseif ( ! file_exists( $archiveName ) ) {
  179.                         echo "<html><title>Public Photo Directory - Download </title><body><BR><B>ERROR:</B> File not found.</body></html>";
  180.                         exit;
  181.                 }
  182.  
  183.                 header("Pragma: public");
  184.                 header("Expires: 0");
  185.                 header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  186.                 header("Cache-Control: private",false);
  187.                 header("Content-Type: application/zip");
  188.                 header("Content-Disposition: attachment; filename=".basename($archiveName).";" );
  189.                 header("Content-Transfer-Encoding: binary");
  190.                 header("Content-Length: ".filesize($archiveName));
  191.                 readfile("$archiveName");
  192.                
  193.          }
  194. }
  195. ?>
  196.  

Пример использования
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include_once("createZip.inc.php");
  4. $createZip = new createZip;  
  5.  
  6. $createZip -> addDirectory("dir/");
  7.  
  8. $fileContents = file_get_contents("img.jpg");  
  9. $createZip -> addFile($fileContents, "dir/img.jpg");  
  10.  
  11. $fileName = "archive.zip";
  12. $fd = fopen ($fileName, "wb");
  13. $out = fwrite ($fd, $createZip -> getZippedfile());
  14. fclose ($fd);
  15.  
  16. $createZip -> forceDownload($fileName);
  17. @unlink($fileName);
  18. ?>
  19.  

И функция для извлечения файлов из архива
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $dir = realpath("./unzip");
  4. $file = realpath("./images.zip");
  5. $log = 1;
  6. unpackZip($dir, $file, $log);
  7.  
  8. /**
  9.  * Распаковывает zip-архив в указанный каталог.
  10.  * $dir  - полный путь к каталогу.
  11.  * $file - полный путь к zip-архиву.
  12.  * $log  - флаг вывода диагностики.
  13.  */
  14. function unpackZip($dir, $file, $log=0) {
  15.     if ($log) echo "Start unpack [$file] into [$dir] directory... <br/>";
  16.  
  17.     if ($zip = zip_open($file)) {
  18.         if ($zip) {
  19.             // создать каталог, если он не существует
  20.             if (! file_exists($dir)) mkdir($dir);
  21.  
  22.             while ($zip_entry = zip_read($zip)) {
  23.                 $name = zip_entry_name($zip_entry);
  24.                 if ($log) echo "   <b>unpack </b>: $name <br/>";
  25.  
  26.                 // последний символ имени
  27.                 $last = substr($name, strlen($name)-1);
  28.  
  29.                 // если это каталог
  30.                 if ($last == "/" || $last == "\\\\") {
  31.                     $subdir = $dir."/".$name;
  32.                     // создать каталог, если он не существует
  33.                     if (! file_exists($subdir)) mkdir ($subdir);
  34.                 } else {
  35.                     // распаковать файл
  36.                     if (zip_entry_open($zip,$zip_entry,"r")) {
  37.                         $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
  38.                         $fp = fopen($dir."/".zip_entry_name($zip_entry),"w");
  39.                         fwrite($fp,$buf);
  40.                         zip_entry_close($zip_entry);
  41.                     } else {
  42.                         return false;
  43.                     }
  44.                 }
  45.             }
  46.             zip_close($zip);
  47.         }
  48.     } else {
  49.         return false;
  50.     }
  51.  
  52.     return true;
  53. }
  54. ?>
  55.  
evgenijj Отправлено: 05 Июля, 2007 - 08:43:32 • Тема: Курс валют с Центро банка • Форум: Обсуждение статей

Ответов: 7
Просмотров: 6431
Руслан пишет:
Как мне можно это проверить !!!

Выполнить этот скрипт на хостинге. Блин, что там может не работать - 10 строчек кода, стандартные функции?

Страниц (81): В начало « ... 45 46 47 48 [49] 50 51 52 53 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB