PHP.SU

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

Страниц (103): В начало « ... 92 93 94 95 [96] 97 98 99 100 ... » В конец

> Найдено сообщений: 1539
Uchkuma Отправлено: 06 Июля, 2010 - 21:45:42 • Тема: Ламерский вопрос • Форум: Программирование на PHP

Ответов: 69
Просмотров: 7214
DENWER пишет:
Uchkuma, как вы это сделали? У меня такое не срабатывает.
Я уже не помню. Найдите файл httpd.conf в папке денвера, а в этом файле строчку с именем ServerAlias. Кажется, ее можно просто удалить.
А на сайте auto.ru стоит 301 редирект. ... Присмотрелся - стоит 302, что странно Однако .
Uchkuma Отправлено: 06 Июля, 2010 - 20:26:05 • Тема: Удаление директории со всем содержимым • Форум: Программирование на PHP

Ответов: 9
Просмотров: 3890
JustUserR пишет:
вовсе не обязательно быть его владельцем и тем более менять права на него
Champion пишет:
выполнять chmod в скрипте которому может не хватать прав на это - забавное решение.
Действительно Радость . Сам в свое время нарыл этот скрипт из инета, и ведь он года 3 уже используется в моей CMS. Теперь вижу несуразицу.
Uchkuma Отправлено: 06 Июля, 2010 - 16:32:51 • Тема: Удаление директории со всем содержимым • Форум: Программирование на PHP

Ответов: 9
Просмотров: 3890
PHP:
скопировать код в буфер обмена
  1. function RemoveDir($path){
  2. if(file_exists($path) && is_dir($path)){
  3. $dirHandle = opendir($path);
  4. while(false!==($file = readdir($dirHandle))){
  5. if($file!='.' && $file!='..'){
  6. $tmpPath = $path.'/'.$file;
  7. chmod($tmpPath, 0777);
  8. if(is_dir($tmpPath)){
  9. RemoveDir($tmpPath);
  10. } else {
  11. if(!unlink($tmpPath)) echo 'Не удалось удалить файл «'.$path.'»!';
  12. }
  13. }
  14. }
  15. closedir($dirHandle);
  16.  
  17. // удаляем текущую папку
  18. if(!rmdir($path)) echo 'error', 'Не удалось удалить папку «'.$path.'»!';
  19.  
  20. } else {
  21. echo 'error', 'Папки «'.$path.'» не существует!';
  22. }
  23. }
Uchkuma Отправлено: 06 Июля, 2010 - 15:36:20 • Тема: Постоянные переменные • Форум: Программирование на PHP

Ответов: 9
Просмотров: 770
Цитата:
! Конструкция include позволяет включать удаленные файлы, если такая возможность включена в конфигурационном файле PHP.

Уж лучше пишите путь от корневой папки на сервере.
Или относительно скрипта.
'p.php' - в этой же папке
'../p.php' - на папку выше
'dir/p.php' - во вложенной папке скрипта

Все просто!

'/php' - 100% неправильно, т.к. указывает на корневую папку на сервере, скорее всего. А не на корневую папку сайта, как вы думаете.
Uchkuma Отправлено: 06 Июля, 2010 - 15:25:54 • Тема: Определить что в строке • Форум: Программирование на PHP

Ответов: 2
Просмотров: 266
Нашел, блин. is_numeric().
Uchkuma Отправлено: 06 Июля, 2010 - 15:18:32 • Тема: Постоянные переменные • Форум: Программирование на PHP

Ответов: 9
Просмотров: 770
Надо указывать путь на сервере.
Если лежит в той же папке, что и запускаемый скрипт, то можно указать относительный путь include_once 'p.php';
Uchkuma Отправлено: 06 Июля, 2010 - 15:07:32 • Тема: Постоянные переменные • Форум: Программирование на PHP

Ответов: 9
Просмотров: 770
Может неверный путь к p.php?
Uchkuma Отправлено: 06 Июля, 2010 - 14:57:09 • Тема: Определить что в строке • Форум: Программирование на PHP

Ответов: 2
Просмотров: 266
Ребят, че-то я затупил. Как проще определить, что находится в строке?
PHP:
скопировать код в буфер обмена
  1. $str = 'name';
  2. if(!is_number($str)) echo 'Это буквы';
  3. if(is_number($str)) echo 'Это число';
  4. //выведет 'Это буквы'
  5.  
  6. $str = '12';
  7. if(!is_number($str)) echo 'Это буквы';
  8. if(is_number($str)) echo 'Это число';
  9. //выведет 'Это число'

Даже достаточно проанализировать первый символ строки.
Uchkuma Отправлено: 06 Июля, 2010 - 14:46:53 • Тема: Постоянные переменные • Форум: Программирование на PHP

Ответов: 9
Просмотров: 770
Чтобы были доступны везде, лучше использовать константы:
PHP:
скопировать код в буфер обмена
  1. # Это можно засунуть, скажем в lang.php
  2. define('_TURY_NA', 'Туры на');
  3. define('_TURY_V', 'Туры в');
  4.  
  5.  
  6.  
  7. include_once 'lang.php';
  8. echo _TURY_V.' Турцию';
Uchkuma Отправлено: 06 Июля, 2010 - 10:45:41 • Тема: Сохранение данных в сессии • Форум: Программирование на PHP

Ответов: 2
Просмотров: 701
У меня собственная полноценная CMS со всеми вытекающими. Настроен пользовательский механизм ведения сессий - сессии пользователей заносятся в БД.
Появилась проблема с использованием captcha, которой раньше я, возможно, просто не замечал. Обыкновенная страница с комментариями, где нужно ввести защитный код, чтобы добавить комментарий.
Итак.
1. Открываем страницу, из БД считывается сессия, в процессе выполнения скрипта могут изменяться какие-то переменные состояния пользователя в $_SESSION, скрипт отработал и данные сессии сохранились в БД.
2. Далее браузер запрашивает картинку капчи и следует тот же алгоритм -> считывание сессии, работа скрипта (который выводит капчу и сохраняет ее код в $_SESSION), сохранение сессии.
Так вот. Если второе отработало после первого, то все в порядке. Но иногда получается так, что браузер запрашивает картинку капчи и скрипт вывода капчи отрабатывает РАНЬШЕ, чем отрабатывается вывод страницы с комментариями.
В таком случае первый скрипт перезаписывает состояние сессии второго скрипта (т.к. отрабатывает позже) и код капчи не сохраняется.

Не знаю как это лучше побороть. Поставил пока тупо задержку sleep(2) в скрипт вывода капчи.
Uchkuma Отправлено: 06 Июля, 2010 - 09:32:51 • Тема: проблемы с определением существования элемента массива • Форум: Программирование на PHP

Ответов: 5
Просмотров: 388
А array_key_exists() не подходит?
Uchkuma Отправлено: 06 Июля, 2010 - 09:11:56 • Тема: Обновление форума. Баги и ошибки пишем здесь • Форум: Колонка администратора

Ответов: 468
Просмотров: 201321
И еще сильно раздражает одна вещь. Насколько я знаю, функция копирования исходного кода в буфер обмена работает только в IE. В других браузерах данная фишка отключена в целях безопасности.
Так вот нужно сделать, чтобы при щелчке по ссылке появлялось всплывающее окошко с исходным кодом, откуда его можно было бы самостоятельно скопировать. Потому что если копировать со страницы форума, то текст копируется с пунктами <li> и потом вставляется вот такая лажа:

#
<form action="" method="post">
#
<p align="center">
#
<input type="text" name="links" id="links" size="80"/>
#
<input type="submit" name="submit" id="submit" value="Скачать"/>
#
</p>
#
</form>
#
<?php
#
$link=$_POST['links'];
#
$link=substr($link,39);
#
$link="http://bl.rutube.ru/".$link.".xml";
#
$url = $link;
#
$ch = curl_init(); // initialize curl handle
#
curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
#
curl_setopt($ch, CURLOPT_FAILONERROR, 1); // Fail on errors
#
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
#
curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 15s
#
$document1 = curl_exec($ch);
#
$document=htmlspecialchars($document1);

Огорчение
Uchkuma Отправлено: 06 Июля, 2010 - 08:51:44 • Тема: Доработанная функция отправки почты • Форум: Пользовательские функции

Ответов: 0
Просмотров: 321
99% новичков сталкиваются с проблемой отправки почты стандартной функцией mail().

Основные проблемы:
1. Не доставляются письма на mail.ru или доставляется только 1 в сутки.
2. В теме и содержании письма отображаются крякозябры.

Первый вопрос в интернете предлагают решить отправкой через сокеты или установкой дополнительной библиотеки или класса. Но в основном данная проблема связана с отсутствием заголовка отправителя, что легко исправить.

Второй вопрос решается указанием правильной кодировки и кодированием заголовка темы.
PHP:
скопировать код в буфер обмена
  1. ## Функция кодирования
  2. function mime_header_encode($str, $data_charset, $send_charset=false){
  3. # Если задана кодировка передачи и она не совпадает
  4. # с кодировкой данных, конвертируем строку
  5. if($send_charset AND $data_charset!=$send_charset){
  6. $str = iconv($data_charset, $send_charset, $str);
  7. } else {
  8. $send_charset = $data_charset;
  9. }
  10. return '=?'.$send_charset.'?B?'.base64_encode($str).'?=';
  11.  
  12. }
  13.  
  14.  
  15. function sendmail($to, $subj, $msg, $from, $attach=false){
  16.  
  17. $charset = 'windows-1251';//кодировка письма
  18.  
  19. $subj = mime_header_encode($subj, $charset);//кодируем поле "Тема"
  20.  
  21. $head = "MIME-Version: 1.0\r\n";
  22. $head .= "X-Mailer: PHPMail Tool\r\n";
  23. //$head .= "X-Sender: $from\r\n";
  24. $head .= "X-Priority: 3\r\n";//приоритет
  25. $head .= "From: $from\r\n";
  26.  
  27. # Если есть вложение, присоединяем его
  28. if($attach AND is_file($attach)){
  29. $fp = fopen($attach, 'rb');
  30. if($fp){
  31. $file = fread($fp, filesize($attach));
  32. fclose($fp);
  33. $filename = basename($attach);
  34. $boundary = '--'.md5(uniqid(time()));
  35. $msg .= "\r\n\r\n--$boundary\r\n";
  36. $msg .= "Content-Type: application/octet-stream; name=\"$filename\"\r\n";
  37. $msg .= "Content-Disposition: attachment; filename=\"$filename\"\r\n";
  38. $msg .= "Content-Transfer-Encoding: base64\r\n\r\n";
  39. $msg .= chunk_split(base64_encode($file));
  40. $msg .= "\r\n--$boundary--";
  41. $head .= "Content-Type: multipart/mixed;\r\n";
  42. $head .= " boundary=$boundary";
  43. $head .= "\r\n\r\n--$boundary\r\n";
  44. }
  45. }
  46.  
  47. $head .= "Content-Type: text/plain; charset=$charset\r\n";
  48. $head .= "Content-Transfer-Encoding: 8bit\r\n";
  49.  
  50. return mail($to, $subj, $msg, $head, '-f'.$from);
  51.  
  52. }

Стандартной функции кодирования в PHP нет (есть, кажется, в какой-то библиотеке - пусть меня поправят), поэтому мы определяем свою.

Функция mime_header_encode() принимает 2 обязательных параметра - это кодируемая строка и ее кодировка, и один необязательный - кодировка передачи данных.

Функция sendmail() принимает 4 обязательных параметра - получатель, тема, сообщение, отправитель; и 1 необязательный - файл вложения.
В качестве отправителя рекомендуется указать реальный адрес, принадлежащий вашему хостингу.

Вполне возможно, что после отправки писем с отсутствующими необходимыми заголовками, Вы могли попасть в блэклист mail.ru и Ваши письма по прежнему не будут доставляться. В этом случае пишите кляузу на mail.ru -> Инструкция.
Uchkuma Отправлено: 05 Июля, 2010 - 22:52:03 • Тема: print vs echo • Форум: Программирование на PHP

Ответов: 3
Просмотров: 628
Удобнее использовать, конечно, echo. Большой разницы нет. В какой-то ситуации может понадобиться использование print вместо echo, т.к. print работает как функция и возвращает единицу, а echo ничего не возвращает.
(Добавление)
Вопрос избитый на самом деле.
Uchkuma Отправлено: 05 Июля, 2010 - 22:16:06 • Тема: Ламерский вопрос • Форум: Программирование на PHP

Ответов: 69
Просмотров: 7214
Champion пишет:
Изменить ситуацию так: в файле C:/windows/system32/drivers/etc/hosts написать строчку
127.0.0.1 нужныйдомен
Ну вообще-то денвер при старте сам автоматически создает необходимые записи в этом файле и новичку туда можно не соваться.
DENWER пишет:
Убедился, что в случае совпадения имен, браузер отдает предпочтение домену реально существующему в сети интернет.
Я сам использую одинаковые имена доменов на локальном компьютере и на хостинге и никаких проблем нет. Если денвер запущен, то открывается сайт с локального компьютера.
А вот если вы сначала открыли какой-то реальный домен в браузере, а потом уже запустили денвер, тогда, скорее всего, у вас и дальше будет открываться этот реальный домен. Должно вылечиться перезапуском браузера.
Я для удобства сделал так: при заходе на www.mysite.ru, у меня открывается онлайн версия сайта, а без www - локальная версия.

Страниц (103): В начало « ... 92 93 94 95 [96] 97 98 99 100 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB