Автор Тема: Галерия - част 3  (Прочетена 57036 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

Деан Христов

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 1
  • Публикации: 41
    • Деан Христов
Отг:Галерия - част 3
« Отговор #15 -: 18 Май 2010, 10:07:00 »
Този файл конфигурира настройките на web сървъра на директория (на тази директория в която е разположен .htaccess файла) и поддиректориите към нея.
........................................
1. Създаване и качване(upload) на .htaccess файл.
Като текстов/ASCII файл, Вие го създавате или модифицирате използувайки базов текстов редактор. Качете го (upload) с FTP клиент, в директорията която сте избрали. Upload-а да е в ASCII mode.

Ако искате .htaccess файла да се приложи за целия сайт, качете го във Вашата root (начална) директория. Това е същата директория, която държи Вашата начална страница.

......................................
2. Моят .htaccess файл не работи.
- Убедете се, че текстовия Ви редактор, не е добавил разширение като .txt. Когато го качите на сървъра се вижда дали името на файла е именно .htaccess ,а не .htaccess.txt, защото ако има някакво допълнително разширение сървъра няма да го разпознае и съответно няма да работи. Преименувайте файла на .htaccess без разширението .txt. Ако имате проблеми със създаването на този файл просто си направете htaccess.txt и после когато го качите го преименувайте на .htaccess.

- Ако Вашият .htaccess файл, има дори една грешка в него, ще предизвика генериране на грешки когато се опитвате да видите Вашия уеб сайт.
В този случай, свалете .htaccess файла отстранете грешките и го качете пак на сървъра в/у вече съществуващия там проблемен файл. Ако не можете да премахнете грешките или изтрийте файла на сървъра си или го заменете с празен такъв.


1. Enable/Disable списъка на директорията.
Когато отворите адреса на сайта и ако няма файл който се отваря по подразбиране (index.html - по подразбиране) в браузъра ще видите списък от файловете и директориите, които са в началната директория. Показването на файловете при тази ситуация може да се изключи.

За да може Вашият сървар да изведе списък от файловете за дадена директория, използвайте следната команда във всашия .htaccess.
Options +Indexes

За да имате вместо списъка грешка  " error (403) " , използвайте този ред.
Options -Indexes


2. Стил на списъка
Може да бъде показан различен списък от файлове или  ' екстра '  списък включващ икони, file size, дата на модификация и други.
IndexOptions +FancyIndexing

Или да изключите този стил:
IndexOptions -FancyIndexing

Използувайте горния ред, ако предпочитате обикновения списък.


......................................
3. Игнорирани файлове
Да предположим, че имате директория с .jpg, .gif и .png файлове. Искате само .png файловете да бъдат показани в списъка на директорията. Добавете този ред към Вашия .htaccess.

IndexIgnore *.gif *.jpg

Сега сървъра игнорира .gif и .jpg файловете.

...................................
4. Промяна на началния файл
Може да кажете на сървъра да отваря по подразбиране не index.html, а показан от вас файл. Примерно myfile.html, просто добавете дледния ред във .htaccess файла си.

DirectoryIndex myfile.html

..............................................
5. Променете страниците за различните грешки.
Когато възникне грешка на сайта поради извикването на несъществуващ файл или грешка възникнала при изпълнението на заявката се показват стандартни страници за грешки. Може да направите собствени страници за различните грешки.
Можете да работите и да манипулирате тези съобщения с .htaccess.

ErrorDocument е използван за тази целта, последвано от 3 цифров код характеризиращ грешка.

ErrorDocument 404 /notfound.html

Този пример ще покаже web страницата notfound.html в случаите когато извиквания документ не е открит.
Ако свалите web страница от Вашия сайт и някой опита да я види, той ще види вместо това notfound.html.

Можете и да кажете на .htaccess да покаже текстово съобщение вместо файл.

ErrorDocument 404  " No such document here "



2. Други кодове на грешки:

401 : Authorization Required (област защитена от име/парола).

403 : Forbidden (областта е забранена)

500 : Internal Server Error (Обикновено, това означава, че използваният cgi script е повреден.)
.........................................
6. Защита на директория с име и парола.

Може да използвате username и password, за да ограничите достъпа до директория и нейните поддиректории.
Когато някой опита достъп към такава директория, той вижда прозорец, питащ за user name и password.

1. Създаване на .htaccess файл
Използувайте редовете долу за да активирате авторизацията.

AuthUserFile /home/username/.htpasswd
AuthGroupFile /dev/null
AuthName  " Private Area "
AuthType Basic

require valid-user


Заменете username с Вашето желано име. Първия ред казва на .htaccess, къде може да открие user/password файла.
Различни  ' groups '  могат да бъдат използвани. Този урок е за начинаещи и няма да определяме реален файл.

2. Създаване на файл с потребители и пароли.
Има няколко начина за създаване на .htpasswd файл, от който .htaccess чете за да разпознае дали въведените от посетителя данни да коректни.

Може да бъде направено и с използуване на Unix shell. Отворете SSH connection и въведете долната команда.

htpasswd -c .htpasswd username

Ще Ви бъде представено двукратно питане за въвеждане на парола за този потребител. -c флага кара htpasswd командата да създаде нов файл. Добавете потребители към съществуващ файл, както е показано долу.

htpasswd .htpasswd username

Заменете username с име, за което желаете да има достъп до ограничената от .htaccess директория.
.............................................................

7. Пренасочване посредством .htaccess
Пренасочването се използва, за да може посетителите, да бъдат пренасочени към друга уеб страница.

1. Създаване на .htaccess файл
Да предположим, че сте свалили old.html и желаете да изпратите посетителите, които се интересуват от нея на уеб страницата new.html.

Redirect /old.html http://....../new.html

Всичко е побрано в един ред.
Има и една допълнителна опция. От гледна точка на търсачките най-добрия начин.

Redirect permanent /old.html http://....../new.html

Единствената разлика е генерираният error code, по време на пренасочване на заявката. Индикира, че заявения документ е преместен за добро.

2. Друго приложение
Тази характеристика на .htaccess, може да бъде използувана за всеки тип файл.

Redirect /old.pdf http://....../new.pdf

Реда ще пренасочи запитването за old.pdf към new.pdf файла.


7. Блокиране на на IP адрес посредством .htaccess
Възможно е да има случаи, в които искате да откажете достъп за посетители (роботи или хора) от дадено IP.
.............................
1. Прост .htaccess файл

order allow,deny
deny from 127.0.0.1
allow from all

Горния код ще откаже всички GET и POST запитвания(заявки) направени от IP address 127.0.0.1.

2. Други опции
Блокиране на група IP адреси, под формата на списък ред по ред.

order allow,deny
deny from 127.0.0.1
deny from 127.0.0.2
deny from 127.0.0.3
allow from all

Може да блокирате цяла IP група. Тук няма да зададем последните цифри на ip-то в .htaccess файла.

deny from 127.0.0

Реда отказва достъп на всеки потребители с адрес в диапазона от 127.0.0.0 до 127.0.0.255.
Вместо използуването на цифрови адреси, могат да се въведат имена на домейни (и поддомейни).

deny from google.com

Забранява посетителите от адрес google.com да отварят сайта.

wuser

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 85
  • -Получени: 49
  • Публикации: 2761
Отг:Галерия - част 3
« Отговор #16 -: 18 Май 2010, 20:40:26 »
Това направо трябва да се отдели. Напълно завършен урок си е.
Браво! +1
Мъдростта на патилото
Perl Monks: PHP - it's "training wheels without the bike" -- Randal L. Schwartz


Дееба... чувствам се все едно обяснявам на майка ми как да си отвори пощата
"не работи"
WTF?!?!? к'во значи че не работи?
Не ти се компилира, дава ти грешка, вади ти грешни резултати, компютърът ти се изключва като го напишеш или на целия квартал му спира тока?
Stilgar

vetko

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 13
Отг:Галерия - част 3
« Отговор #17 -: 16 Юни 2010, 17:53:51 »
Здравейте нещо пак сгафих.... значи всичко ми вървеше много добре до момента в който трябваше да се по кажат thumbnails... вижте какво ми излезе
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near  ' pictures.catalogue_id=user_catalogs.catalogue_id ORDER BY user_catalogs.catalogu '  at line 2SQL:SELECT user_catalogs.name,pictures.pic_name,p.comment FROM user_catalogs,pictures WHERE user_catalogs.user_id=1AND pictures.catalogue_id=user_catalogs.catalogue_id ORDER BY user_catalogs.catalogue_id
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\\xampp\\htdocs\\gallery\\common.php on line 17


Warning: Invalid argument supplied for foreach() in C:\\xampp\\htdocs\\gallery\\templates\\index_logged.php  on line 4


ако някой може да ме насочи къде да открия грешката си ще му бъда благодарен!

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 94
  • Публикации: 4836
Отг:Галерия - част 3
« Отговор #18 -: 16 Юни 2010, 21:51:06 »
Ползваш грешна заявка то си пише, обаче дай заявката цялата да я видим де?
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

vetko

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 13
Отг:Галерия - част 3
« Отговор #19 -: 17 Юни 2010, 04:56:40 »
Слойжих и алиасите да е абсолютно същия код и пак

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near  ' p.catalogue_id=uc.catalogue_id ORDER BY uc.catalogue_id '  at line 2SQL:SELECT uc.name,p.pic_name,p.comment FROM user_catalogs as uc,pictures as p WHERE uc.user_id=1AND p.catalogue_id=uc.catalogue_id ORDER BY uc.catalogue_id
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\\xampp\\htdocs\\gallery\\common.php on line 17


Warning: Invalid argument supplied for foreach() in C:\\xampp\\htdocs\\gallery\\templates\\index_logged.php on line 4
 
ето и кода:

$pics=fetch_all(run_q( ' SELECT uc.name,p.pic_name,p.comment FROM user_catalogs as uc,pictures as p WHERE
   uc.user_id= ' .$_SESSION[ ' user_id ' ]. ' AND p.catalogue_id=uc.catalogue_id ORDER BY uc.catalogue_id ' ));

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 94
  • Публикации: 4836
Отг:Галерия - част 3
« Отговор #20 -: 17 Юни 2010, 08:56:40 »
Аз така ан пръв поглед грешка не виждам, обаче ще видя по подробно, после виж да не си се обърнал към неправилни редове или нещо друго в базата и таблиците, като например сбъркана име.
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

vetko

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 13
Отг:Галерия - част 3
« Отговор #21 -: 17 Юни 2010, 15:59:22 »
Проверих всичко направо незнам вече. Дали може да е от някоя настройка на PHP, защото при мен е по подразбиране?

NoBBy

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 4
  • -Получени: 38
  • Публикации: 309
Отг:Галерия - част 3
« Отговор #22 -: 17 Юни 2010, 16:11:48 »
$pics=fetch_all(run_q( ' SELECT uc.name,p.pic_name,p.comment FROM user_catalogs as uc,pictures as p WHERE
uc.user_id= ' .$_SESSION[ ' user_id ' ]. ' #AND p.catalogue_id=uc.catalogue_id ORDER BY uc.catalogue_id ' ));

Сложи един интервал на мястото на #

vetko

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 13
Отг:Галерия - част 3
« Отговор #23 -: 17 Юни 2010, 18:13:16 »
Благодаря много сега ми изчезнаха грешките обаче пак не ми визуализара снимка, само коментарите ми излизат. А иначе снимката се качва в базата данни.

vetko

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 13
Отг:Галерия - част 3
« Отговор #24 -: 17 Юни 2010, 21:19:10 »
Ето и кода

foreach ($pics as $v)
    {
   echo  ' <div style: " width:100px; " >
       <div><img_src= " user_pics/ ' .$_SESSION[ ' user_id ' ]. ' /thumb_ ' .$v[ ' pic_name ' ]. '  " ><div>
       <div> ' .$v[ ' comment ' ]. ' </div>
 <div> ' ;
}
« Последна редакция: 03 Декември 2010, 14:16:39 от borovaka »

vetko

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 13
Отг:Галерия - част 3
« Отговор #25 -: 17 Юни 2010, 21:39:54 »
Видях </div> затворих ги не е в това проблема.
« Последна редакция: 03 Декември 2010, 14:17:04 от borovaka »

kosboss

  • Newbie
  • *
  • Благодарности
  • -Казани: 1
  • -Получени: 0
  • Публикации: 34
    • Личен блог
Отг:Галерия - част 3
« Отговор #26 -: 12 Август 2010, 21:26:42 »
-Благодаря за урока.
-Искам само да вмъкна че при конфигурирането на etc/apache2/sites-available/default трябва да рестартирате, за да се получи ефекта при които никой няма достъп до снимките, говоря за (18мин на урока), лично аз си загубих доста време докато разбера това :S , и реших да споделя малко горчив опит.
« Последна редакция: 03 Декември 2010, 14:16:57 от borovaka »

kosboss

  • Newbie
  • *
  • Благодарности
  • -Казани: 1
  • -Получени: 0
  • Публикации: 34
    • Личен блог
Отг:Галерия - част 3
« Отговор #27 -: 08 Септември 2010, 21:14:09 »
Здравейте при мен възникна един проблем докато експерементирах, създадох php страница, която прави проверката дали снимката е собственост на даден потребител когато напиша
session_start();
include  ' functions.php ' ;
db_init();
не ми излизат снимките на страницата index_logged.php(виж кода най-доло).
Във functions.php имам функцията
function db_init() {
    mysql_connect( ' localhost ' , ' root ' , ' 1 ' ) or die ( ' Грешка в базата даннй. ' );
    mysql_select_db( ' SG1 ' ) or die ( ' Грешка при връзката с базата даннй ' );
}
-Когато използвам include  ' common.php ' ; който съдържа:
session_start();
mysql_connect( ' localhost ' , ' root ' , ' 1 ' ) or die ( ' Грешка в базата даннй. ' );
mysql_select_db( ' SG1 ' ) or die ( ' Грешка при връзката с базата даннй ' );
снимките ми излизат на страницата index_logged.php
-Въпроса ми е може ли някой да ми обясни защо става така че когато извикам include  ' common.php ' ; снимките ми излизат а когата извикам вместо него
session_start();
include  ' functions.php ' ;
db_init();
снимките не се виждат.
-Благодаря предварително на всеки отзовал се.
-А ето и кода по доло, надявам се да съм бил достатъчно ясен.

<?php
session_start();
include  ' functions.php ' ;
db_init();
//include  ' common.php ' ;

if ($_SESSION[ ' is_logged ' ]===true) {

    $p_id=(int)$_GET[ ' pic_id ' ];

    if ($p_id>0) {
       
        $rs=run_q( ' SELECT p.p_name FROM pictures as p,folders as f WHERE p.p_id= ' .$p_id. '  AND p.p_folder_id=f.f_id AND f.f_user_id= ' .$_SESSION[ ' u_id ' ]. '  ' );

        $row=mysql_fetch_assoc($rs);

        if (strlen($row[ ' p_name ' ])>2
                && file_exists( ' pic ' .DIRECTORY_SEPARATOR.$_SESSION[ ' u_id ' ].DIRECTORY_SEPARATOR.$row[ ' p_name ' ])) {           
    readfile( ' pic ' .DIRECTORY_SEPARATOR.$_SESSION[ ' user_info ' ][ ' u_id ' ].DIRECTORY_SEPARATOR. ' thumb_ ' .$row[ ' p_name ' ]);           
        }

    }

}
?>
« Последна редакция: 03 Декември 2010, 14:16:52 от borovaka »

nimrat

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Отг:Галерия - част 3
« Отговор #28 -: 12 Октомври 2010, 11:19:02 »
отдели апострофа и  " AND "  защото ще стане нещо такова uc.user_id=10AND а това е невалидно  
$pics=fetch_all(run_q( ' SELECT uc.name,p.pic_name,p.comment FROM user_catalogs as uc,pictures as p WHERE
uc.user_id= ' .$_SESSION[ ' user_id ' ]. ' AND p.catalogue_id=uc.catalogue_id ORDER BY uc.catalogue_id ' ));

не знам дали е от това но за всеки случай го провери

а аз имам друг проблем. Като качвам снимки с име  на бг в папката на потребителя се записват на маймуница и след това foreach-а за thumbnail-ите не ми изкарва thumbnail-ите. Ако може някой да помогне ще съм благодарен.

nimrat

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Отг:Галерия - част 3
« Отговор #29 -: 12 Октомври 2010, 12:00:46 »
отдели апострофа и  " AND "  защото ще стане нещо такова uc.user_id=10AND а това е невалидно  
$pics=fetch_all(run_q( ' SELECT uc.name,p.pic_name,p.comment FROM user_catalogs as uc,pictures as p WHERE
uc.user_id= ' .$_SESSION[ ' user_id ' ]. ' AND p.catalogue_id=uc.catalogue_id ORDER BY uc.catalogue_id ' ));

не знам дали е от това но за всеки случай го провери

а аз имам друг проблем. Като качвам снимки с име  на бг в папката на потребителя се записват на маймуница и след това foreach-а за thumbnail-ите не ми изкарва thumbnail-ите. Ако може някой да помогне ще съм благодарен.