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

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

marto

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 7
Отг:Галерия - част 2
« Отговор #15 -: 23 Юли 2010, 19:22:31 »
Може и без DIRECTORY_SEPARATOR. Даже е по-добре без DIRECTORY_SEPARATOR. Няма да даде грешка :)
П.С. Има един проблем, който е хубаво да се оправи. Значи ти вземаш групата от този дроп даун и проверяваш дали е по-голяма от нула, но да кажем, че аз заменя value на някой от option-ите с 999999 примерно (едва ли един потребител ще има толкова групи) и съответно така ще бъде вкаран и в базата данни. :) Затова би било хубаво да се направи нещо от рода на това?
Код: PHP
  1. if ((int)$_POST[ ' group ' ] > 0 && (int)$_POST[ ' group ' ]<=mysql_num_rows($sql_zaqvka))
  2. {
  3. //tralalla koda koito 6te pite6e
  4. }
  5. else
  6. {
  7. $error[]= ' Нещо шмикеруваш ' ;
  8. }
« Последна редакция: 15 Април 2015, 20:46:33 от Avalanche »

federer_11

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 1
  • Публикации: 931
  • ULTRAS LEVSKI
Отг:Галерия - част 2
« Отговор #16 -: 24 Юли 2010, 11:57:57 »
Това е ясно, филтрираш абсолютно цялата входяща информация. Но защо да не използва DIRECTORY_SEPARATOR не разбрах?  :blink:
(x)HTML, CSS, PHP, MySQL, XML, WML, JavaScript (jQuery)

marto

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 7
Отг:Галерия - част 2
« Отговор #17 -: 25 Юли 2010, 15:23:52 »

kosboss

  • Newbie
  • *
  • Благодарности
  • -Казани: 1
  • -Получени: 0
  • Публикации: 34
    • Личен блог
Отг:Галерия - част 2
« Отговор #18 -: 04 Септември 2010, 20:39:15 »
-Здравейте искам да споделя решението на един проблем поставен от vesela_sashkova малко по-нагоре в темата а именно това че при опит за проверка дали файла е качен в темпоралната памет, тоест if ($_FILES[ ' file_x ' ][ ' tmp_name ' ]) се оказва че файла не е качен при натискане на бутона Качи.
-Това се дължи че по-подразбиране настроиките на php.ini дават възможност да се качва фаилове до 2МБ и съответно ако качите снимка над 2МБ файла няма да се качи и проверката няма да мине.
-За да решите този проблем трябва да отидете в папката на php.ini и да промените
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M на upload_max_filesize = 5M или повече в зависимост от нуждите ви и да рестартирате.
-В допълнение искам да добавя че е добре да следите и
; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
post_max_size = 8M
който по подразбиране е 8МБ, ако чрез post качите над 8МБ съдържание пак ще имате проблем с качването.
-Надявам се да съм помогнал с този си пост на някой който ще се сблъска с този проблем.  :)

wuser

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 85
  • -Получени: 49
  • Публикации: 2761
Отг:Галерия - част 2
« Отговор #19 -: 04 Септември 2010, 20:52:23 »
kosboss  ако ти кажа, че преди година и половина съм си бил главата в стената три дни изгубил напълно вяра в себе си :( И накрая дадох кода на Gatakka, които мило ми обясни колко съм тъп ;) Не бе шегувам се. Той е културен, отнесе се прекрасно.

Федерер обсъжда интересна тема. В Perl интерпретатора автоматично преобразува обратно наклонените в нормални. Сигурно и пъчъпъто го прави защото тези обратно наклонени правят зверски проблеми на синтаксиса, когато не са в правилен контекст. Ама сега не мога да направя експеримент, че нямам бози наоколо. А пък и не ми се рови в документацията. Иначе по начало за тия сепарейтори ми се стори тъпа идея.
Мъдростта на патилото
Perl Monks: PHP - it's "training wheels without the bike" -- Randal L. Schwartz


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

hackera_vd

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 10
Re: Галерия - част 2
« Отговор #20 -: 03 Март 2012, 15:33:07 »
А как примерно да направя да качва .rar и .zip?

HanKrum

  • Гост
Re: Галерия - част 2
« Отговор #21 -: 03 Март 2012, 15:47:33 »
По същия начин се качват, но после трябва да имаш инструмент за разархивиране на сървъра!

SocialEvil

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 3
  • -Получени: 4
  • Публикации: 463
Re: Галерия - част 2
« Отговор #22 -: 03 Март 2012, 15:48:59 »
и трябва да видиш в php.ini да си разрешил макс сайз да е над 2мб.
Please allow me to introduce myself
I'm a man of wealth and taste
I've been around for a long, long year
Stole many a man's soul and faith

hackera_vd

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 10
Re: Галерия - част 2
« Отговор #23 -: 03 Март 2012, 17:12:00 »
Понеже е една система за качване на плъгини и позволените формати са .rar и .zip, но като преименувам картинка в .rar или .zip проверката минава
Код: PHP
  1. if ($_FILES['plug']['type'] != 'aplication/zip'
  2.                                 && $_FILES['plug']['type'] != 'application/x-zip'
  3.                                 && $_FILES['plug']['type'] != 'application/x-zip-compressed'
  4.                                 && $_FILES['plug']['type'] != 'multipart/x-zip'
  5.                                 && $_FILES['plug']['type'] != 'application/x-compressed'
  6.                                 && $_FILES['plug']['type'] != 'application/x-rar-compressed')
  7. {
  8. //натам кода
  9. }
  10.  
та проверката я минава и на пракитика може да се преименува всеки файл и да мине проверката

Stan

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 27
  • -Получени: 135
  • Публикации: 641
Re: Галерия - част 2
« Отговор #24 -: 03 Март 2012, 20:12:58 »

hackera_vd

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 10
Re: Галерия - част 2
« Отговор #25 -: 03 Март 2012, 20:50:34 »
как да преработа горната проверка с тво което даде? Моля помогни ми

Did0_

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 101
Re: Галерия - част 2
« Отговор #26 -: 13 Март 2012, 12:39:20 »
здравейте имам следния проблем с формата за качване качвам снимка всичко минава нормално но когато отида в таблицата със имената на снимките на всяка снимка ми дава catalog_id: 0 не зависимо че избирам различни категории

HanKrum

  • Гост
Re: Галерия - част 2
« Отговор #27 -: 13 Март 2012, 13:18:49 »
Здрасти @Did0_, добре дошъл в нашия електронен свят. Не съм гледал този урок и затова те моля да публикуваш код или друг материал, че да се ориентирам за какво по-точно става дума.

Did0_

  • Full Member
  • ***
  • Благодарности
  • -Казани: 3
  • -Получени: 1
  • Публикации: 101
Re: Галерия - част 2
« Отговор #28 -: 13 Март 2012, 18:34:45 »
значи това ми е формата за ъплоад:
Код: PHP
  1. <?php
  2. if ($success) {
  3.     echo 'Снимката бе качена успешно.';
  4. }
  5. if (count($err) > 0) {
  6.     foreach ($err as $v) {
  7.         echo '<div>' . $v . '</div>';
  8.     }
  9. }
  10. ?>
  11. <form method="post" enctype="multipart/form-data">
  12.  
  13.     Група:<select name="cats">
  14.         <?php
  15.         foreach ($cat as $v) {
  16.  
  17.             echo '<option value' . $v['catalog_id'] . '>' . $v['name'] . '</option>';
  18.         }
  19.         ?>
  20.     </select><br />
  21.     Файл:<input type="file" name="user_pic"><br/>
  22.     Описание:<textarea name="user_desc"></textarea><br />
  23.     Публична:<input type="checkbox" name="is_public" value="1"><br />
  24.     <input type="submit" value="Качи">
  25. </form>

а тук ми е php кода който прави запис таблица catalogs:
Код: PHP
  1. <?php
  2.  
  3. include 'common.php';
  4. if ($_SESSION['is_logged'] === true) {
  5.     if ($_FILES['user_pic']['tmp_name']) {
  6.         if ($_FILES['user_pic']['size'] > 2097152) {
  7.             $err[] = 'Файлa е по-голям от 2MB.';
  8.         }
  9.         if ($_FILES['user_pic']['type'] != 'image/gif' &&
  10.                 $_FILES['user_pic']['type'] != 'image/jpeg' &&
  11.                 $_FILES['user_pic']['type'] != 'image/jperg') {
  12.             $err[] = 'Файлa не е снимка.';
  13.         }
  14.         if (!$_POST['cats'] > 0) {
  15.             $err[] = 'Изберете категория.';
  16.         }
  17.         if (count($err) == 0) {
  18.             if (!is_dir('user_pics' . DIRECTORY_SEPARATOR . $_SESSION['user_id'])) {
  19.                 mkdir('user_pics' . DIRECTORY_SEPARATOR . $_SESSION['user_id']);
  20.             }
  21.             $name = time() . '_' . $_FILES['user_pic']['name'];
  22.             if (move_uploaded_file($_FILES['user_pic']['tmp_name'], 'user_pics' . DIRECTORY_SEPARATOR . $_SESSION['user_id'] . DIRECTORY_SEPARATOR . $name)) {
  23.                
  24.             }
  25.             if ($_POST[is_public] == 1) {
  26.                 $public = 1;
  27.             } else {
  28.                 $public = 0;
  29.             }
  30.             run_q('INSERT INTO pictures (pic_name,catalog_id,comment,date_added,is_public) VALUES
  31.                ("' . $name . '",' . (int) $_POST['cats'] . ',"' . addslashes($_POST['user_desc']) . '",' . time() . ',' . $public . ')');
  32.             $success = true;
  33.         } else {
  34.             $err[] = 'Грешка при копирането на файла. Моля опитайте отново.';
  35.         }
  36.     }
  37.  
  38.  
  39.     $cat = fetch_all(run_q('SELECT * FROM user_catalogs WHERE user_id = ' . $_SESSION['user_id']));
  40.  
  41.     include 'templates/header.php';
  42.     include 'templates/upload.php';
  43.     include 'templates/footer.php';
  44. } else {
  45.     header('Location:index.php');
  46.     exit();
  47. }
  48. ?>

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Галерия - част 2
« Отговор #29 -: 13 Март 2012, 18:43:59 »
Дидо, след като в таблицата в базата данни catalog_id ти е равно на 0, значи нещо не ти е наред с бутона, с който избираш категория. На пръв погледни ми се наби един изпуснат знак равно:
Код: PHP
  1. echo '<option value' . $v['catalog_id'] . '>' . $v['name'] . '</option>';
трябва да го направиш
Код: PHP
  1. echo '<option value="' . $v['catalog_id'] . '">' . $v['name'] . '</option>';

Когато в html не задаваш стойност (value) на селек, за стойност се приема стринга, който стой между отварящия и затварящия таг. На тебе това ти е името на категорията. И когато тръгнеш да качваш снимката ти подаваш стринг към integer поле и затова се получава 0.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!