PHP.SU

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

Страниц (5): « 1 [2] 3 4 5 »

> Найдено сообщений: 63
tsoi85 Отправлено: 14 Августа, 2011 - 19:50:44 • Тема: Как бы движок, но дико втыкает • Форум: Напишите за меня, пожалуйста

Ответов: 43
Просмотров: 447
ok
ok пишет:
[Sun Aug 14 20:10:18 2011] [error] [client 109.165.95.118] PHP Warning: Cannot modify header information - headers already sent by (output started at /usr/home/...../site.ru/html/index.php:1) in /usr/home/...../site.ru/html/ind ex.php on line 5

Или пробел на первой строке файла, или Utf-8 с BOM.
Поэтому заголовок на пятой строке, не может быть отправлен/изменён.
tsoi85 Отправлено: 14 Августа, 2011 - 16:27:31 • Тема: Как бы движок, но дико втыкает • Форум: Напишите за меня, пожалуйста

Ответов: 43
Просмотров: 447
ok, вариант с Вашим .htaccess

При обращении к /index.(html|php) - теперь 404.
Проблема с показом errors/404.php, думаю теперь также решена.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $url = (preg_match("/^([-_a-zA-Z0-9\/\.]+)(\.html|\/)$/", $_SERVER['REQUEST_URI'])?str_replace('..', '', $_SERVER['REQUEST_URI']):'');
  3. if($_SERVER['HTTP_HOST'] == 'www.site.ru') {
  4.   header("HTTP/1.1 301 Moved Permanently");
  5.   header("Location: http://site.ru".$_SERVER['REQUEST_URI']);
  6.   exit;
  7. }
  8. $incfile = "data";
  9. if($_SERVER['REQUEST_URI']=='/') {
  10.     $incfile .= "/index.";
  11. } elseif (!empty($url) && substr($url, strlen($url)-1)=='/') {
  12.     $incfile .= $url."index.";
  13. } else {
  14.     $incfile .= substr($url, 0, strlen($url)-4);
  15. }
  16. $incfile .= "php";
  17. $incl = (basename($_SERVER['REQUEST_URI']) != 'index.html')?1:0;
  18. if ($incl && file_exists($incfile)) {
  19.     include($incfile);
  20. } else {
  21.         header("HTTP/1.0 404 Not Found");
  22.     header('HTTP/1.1 404 Not Found');
  23.     header('Status: 404 Not Found');
  24.     include("errors/404.php");
  25. }
  26. include("templates/template.php");
  27. ?>


Если же ругается сервер
CODE (htmlphp):
скопировать код в буфер обмена
  1. [Sun Aug 14 01:15:41 2011] [error] [client 46.61.1.7] ALERT - tried to register forbidden variable '_REQUEST' through GET variables (attacker '46.61.1.7', file '/usr/home/...../site.ru/html/index.php'), referer: http://site.ru/contacts.html

то попробуйте заменить в .htaccess:
это: RewriteRule ^(.*)$ index.php?_REQUEST=$1 [L]
на это: RewriteRule ^(.*)$ index.php?$1 [L]
возможно перестанет ругаться.
tsoi85 Отправлено: 14 Августа, 2011 - 13:49:58 • Тема: Как бы движок, но дико втыкает • Форум: Напишите за меня, пожалуйста

Ответов: 43
Просмотров: 447
ok пишет:
tsoi85
Страницы со слешем, включая корень, стали открываться. Но по-прежнему, выводится пустая страница вместо 404 и выводятся /index.(html|php).


/index.php - Выводится только (в корне), файл ведь существует и не него не действует:
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteCond %{REQUEST_FILENAME} !-f
  2. RewriteCond %{REQUEST_FILENAME} !-d
  3. RewriteRule ^(.*)$ index.php?r=$1 [L]

Например обращение к /articles/index.php - Возвращает 404.

/articles/index.html тоже самое что и /articles/horosho.html
Можно в скрипте указать по умолчанию, не index, а например default и переименовать соответственно в папке data/*.
PHP:
скопировать код в буфер обмена
  1. $incfile .= "default.";
  2. $incfile .= $url."default.";

И не будет /articles/index.html
Хотя я считаю это лишним действием.

А errors/404.php - не пустой?
tsoi85 Отправлено: 14 Августа, 2011 - 12:55:44 • Тема: Как бы движок, но дико втыкает • Форум: Напишите за меня, пожалуйста

Ответов: 43
Просмотров: 447
Поправил.
Спойлер (Отобразить)
tsoi85 Отправлено: 14 Августа, 2011 - 11:41:36 • Тема: Как бы движок, но дико втыкает • Форум: Напишите за меня, пожалуйста

Ответов: 43
Просмотров: 447
Ещё вариант:

Спойлер (Отобразить)
tsoi85 Отправлено: 14 Августа, 2011 - 11:04:40 • Тема: Как бы движок, но дико втыкает • Форум: Напишите за меня, пожалуйста

Ответов: 43
Просмотров: 447
White, спасибо.
Недосмотрел. Убираем слеш.


ok пишет:
В папку /errors/ я тупо положу .htaccess (deny from all)

Не выход, т.к. можно и ещё на папку выше вылезти.
tsoi85 Отправлено: 14 Августа, 2011 - 03:00:05 • Тема: Как бы движок, но дико втыкает • Форум: Напишите за меня, пожалуйста

Ответов: 43
Просмотров: 447
index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $url = (preg_match("/^([-_a-zA-Z0-9\/\.]+)(\.html|\/)$/", $_SERVER['REQUEST_URI'])?str_replace('..', '', $_SERVER['REQUEST_URI']):'');
  3. if($_SERVER['HTTP_HOST'] == 'www.my-site.ru') {
  4.   header("HTTP/1.1 301 Moved Permanently");
  5.   header("Location: http://my-site.ru".$_SERVER['REQUEST_URI']);
  6.   exit;
  7. }
  8. $incfile = "data";
  9. if($_SERVER['REQUEST_URI']=='/') {
  10.     $incfile .= "/index.";
  11. } elseif (!empty($url) && substr($url, strlen($url)-1)=='/') {
  12.     $incfile .= $url."index.";
  13. } else {
  14.     $incfile .= substr($url, 0, strlen($url)-4);
  15. }
  16. $incfile .= "php";
  17. $incl = (basename($_SERVER['REQUEST_URI']) != 'index.html')?1:0;
  18. if ($incl && file_exists($incfile)) {
  19.     include($incfile);
  20. } else {
  21.         header("HTTP/1.0 404 Not Found");
  22.     header('HTTP/1.1 404 Not Found');
  23.     header('Status: 404 Not Found');
  24.     include("errors/404.php");
  25. }
  26. include("templates/template.php");
  27. ?>



.htaccess
CODE (html):
скопировать код в буфер обмена
  1. Options -Indexes +FollowSymLinks
  2. RewriteEngine On
  3. RewriteBase /
  4. RewriteRule ^\.htaccess$ - [F]
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteCond %{REQUEST_FILENAME} !-d
  7. RewriteRule ^(.*)$ index.php?r=$1 [L]
tsoi85 Отправлено: 12 Августа, 2011 - 01:31:43 • Тема: Загрузка нескольких файлов на сервер • Форум: HTTP и PHP

Ответов: 44
Просмотров: 28342
armancho7777777,
Была поставлена интересная задача, было написано решение.

В удалении как одного, так и нескольких «фрагментов» не вижу ничего сложного.
Строится новый массив подобный тому что при загрузке и перезаписывается.

UPD:
Лично мне, не лень, сделать ещё одну таблицу. Радость
tsoi85 Отправлено: 12 Августа, 2011 - 00:38:06 • Тема: Загрузка нескольких файлов на сервер • Форум: HTTP и PHP

Ответов: 44
Просмотров: 28342
armancho7777777 пишет:
tsoi85, в любом поле в любой таблице, допускается лишь одно значение.

Создайте отдельную таблицу для картинок. Я объяснил выше.

А как тогда по вашему в полях c типом TEXT хранятся переводы строк?

Задача на данный момент следующая:
KuPbI4 пишет:
У меня вопрос появился.
Существует ли в природе динамическая загрузка файлов? То есть скажем так, в БД, есть таблица, в этой таблице есть один столбец под названием img, а там внутри количество наименований файлов изображения и загрузится хоть 1 файл изображения, хоть 5 изображений и т.д. Если да, то подскажите, как это реализовать?! Тут конечно нужен динамический массив, но я его не совсем представил.
PHP:
скопировать код в буфер обмена
 
$img=array();


А в таблице базы данных, есть поле `files` c типом TEXT, там хранятся имена файлов (одно имя в строке).

file1.jpg
file2.jpg
file3.jpg
tsoi85 Отправлено: 12 Августа, 2011 - 00:22:38 • Тема: Загрузка нескольких файлов на сервер • Форум: HTTP и PHP

Ответов: 44
Просмотров: 28342
Поправлено.

Вывод данных из БД:
Спойлер (Отобразить)
tsoi85 Отправлено: 11 Августа, 2011 - 22:28:41 • Тема: Загрузка нескольких файлов на сервер • Форум: HTTP и PHP

Ответов: 44
Просмотров: 28342
Поправил, но не проверял:

Скрипт добавления в БД:
Спойлер (Отобразить)


И вывод данных с БД:
Спойлер (Отобразить)
tsoi85 Отправлено: 11 Августа, 2011 - 21:36:52 • Тема: Загрузка нескольких файлов на сервер • Форум: HTTP и PHP

Ответов: 44
Просмотров: 28342
Цитата:
Функция trim() я как понимаю это убирает строки и пробелы c начала до конца.

trim() удаляет не только пробелы. http://www.php.su/functions/?trim

Цитата:
Так правильнее?

Да, так правильнее.
(Добавление)
Но, без этого:
CODE (php):
скопировать код в буфер обмена
  1. echo '<img width="150px" heigth="150px" src="../../img/cars/'.$img.'">';
tsoi85 Отправлено: 11 Августа, 2011 - 19:05:02 • Тема: Загрузка нескольких файлов на сервер • Форум: HTTP и PHP

Ответов: 44
Просмотров: 28342
KuPbI4, очень интересный вопрос.
Итак, в таблице есть поле `files` c типом TEXT, там хранятся имена файлов (одно имя в строке).

file1.jpg
file2.jpg
file3.jpg

При записи, с примером выше:
PHP:
скопировать код в буфер обмена
  1. $img = '';
  2. foreach($_FILES['file']['name'] as $k=>$f) {
  3.   if (!$_FILES['file']['error'][$k]) {
  4.     if (is_uploaded_file($_FILES['file']['tmp_name'][$k])) {
  5.       if (move_uploaded_file($_FILES['file']['tmp_name'][$k], "../img/cars/".$_FILES['file']['name'][$k])) {
  6.         $img .= $_FILES['file']['name'][$k]."\r\n";
  7.       }
  8.     }
  9.   }
  10. }
  11. #Далее, $img обработать функцией trim() и записать в базу данных
  12.  


При выводе из базы:
PHP:
скопировать код в буфер обмена
  1.  
  2. $PRINT = mysql_fetch_array();
  3. #Разбиваем текст и создаём массив c именами файлов:
  4. $files = explode("\r\n", $PRINT['files']);
  5. #$files[0] - file1.jpg и т.д.
  6.  
tsoi85 Отправлено: 11 Августа, 2011 - 18:20:53 • Тема: Таблица умножения • Форум: Вопросы новичков

Ответов: 7
Просмотров: 627
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. function table($cols,$rows,$color1,$color2,$color3){
  4. echo '<div align="center"><h1 align="center">Таблица умножения</h1>
  5. <table border=1>';
  6.  ###
  7.    for($i=1; $i<$cols; $i++){
  8.         echo '<tr align="center">';
  9.         for($j=1; $j<$rows; $j++){
  10.                 $rez = $i * $j;
  11.                 $color = (($i ==1 && $j==1)?$color1:(($i==1)?$color2:(($j==1)?$color3:'white')));
  12.                 echo '<td style="background-color: '.$color.'; text-align:center;">'.$rez.'</td>';
  13.         }
  14.         echo '</tr>';
  15.     }
  16.  
  17. echo '</table></div>';
  18. }
  19.  
  20. table(10,10,"blue","yellow","green");
  21.  
  22. ?>
tsoi85 Отправлено: 09 Августа, 2011 - 20:58:09 • Тема: Таблица умножения • Форум: Вопросы новичков

Ответов: 7
Просмотров: 627
Цвета измените на свои
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $cols = 10;
  3. $rows = 10;
  4. $cols1 = 1;
  5. echo '<h1><center>ТАБЛИЦА УМНОЖЕНИЯ</center></h1>';
  6. echo '<table style="border:1px solid black; padding:10px; margin-left:300px;">';
  7. while($cols1<$cols){
  8. $rows1 = 1;
  9. echo '<tr>';
  10.     while($rows1<$rows) {
  11.          $rez = $cols1*$rows1;
  12.          # Цвета
  13.         $bgr = (($rows1==1 && $cols1==1)?'#00F':(($rows1==1)?'#F00':(($cols1==1)?'#0F0':'#FFF')));
  14.          echo '<td style="border:1px solid black; padding:20px; background-color: '.$bgr.';">'.$rez. ' '.' </td>';
  15.          ###
  16.         $rows1++;
  17.     }
  18.     echo '<br />';
  19.     echo '</tr>';
  20. $cols1++;
  21. }
  22. echo '</table>';
  23. ?>

Страниц (5): « 1 [2] 3 4 5 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB