• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak przesłać obrazek na serwer?

Object Storage Arubacloud
0 głosów
201 wizyt
pytanie zadane 13 grudnia 2016 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)

Witam. Wykonuję teraz stronę z uploadem zdjęć i mam problem. Chodzi o problem z wysłania obrazka na serwer. Wyskakuje mi błąd: Undefined index: obrazek in 9, 39, 49

Oto mój kod: 

<?php
   session_start();

   require_once "connect.php";
//sprawdzanie błędów
function sprawdz_bledy()
{
  if ($_FILES['obrazek']['error'] > 0)
  {
    echo 'problem: ';
    switch ($_FILES['obrazek']['error'])
    {
      // jest większy niż domyślny maksymalny rozmiar,
      // podany w pliku konfiguracyjnym
      case 1: {echo 'Rozmiar pliku jest zbyt duży.'; break;}

      // jest większy niż wartość pola formularza
      // MAX_FILE_SIZE
      case 2: {echo 'Rozmiar pliku jest zbyt duży.'; break;}

      // plik nie został wysłany w całości
      case 3: {echo 'Plik wysłany tylko częściowo.'; break;}

      // plik nie został wysłany
      case 4: {echo 'Nie wysłano żadnego pliku.'; break;}

      // pozostałe błędy
      default: {echo 'Wystąpił błąd podczas wysyłania.';
        break;}
    }
    return false;
  }
  return true;
}
//typ obrazka
function sprawdz_typ()
{
	if ($_FILES['obrazek']['type'] != 'image/jpeg')
		return false;
	return true;
}

//zapisz plik
function zapisz_plik()
{
  $lokalizacja = "images/IMG";

  if(is_uploaded_file($_FILES['obrazek']['tmp_name']))
  {
    if(!move_uploaded_file($_FILES['obrazek']['tmp_name'], $lokalizacja))
    {
      echo 'problem: Nie udało się skopiować pliku do katalogu.';
        return false;
    }
  }
  else
  {
    echo 'problem: Możliwy atak podczas przesyłania pliku.';
	echo 'Plik nie został zapisany.';
    return false;
  }
  return true;
}

sprawdz_bledy();
sprawdz_typ();
zapisz_plik();



 ?>

Z góry dzięki za pomoc

komentarz 13 grudnia 2016 przez xandros Nałogowiec (29,450 p.)

Użyj stałych zamiast magic numbers

http://php.net/manual/en/features.file-upload.errors.php

eg:

case UPLOAD_ERR_PARTIAL:  
    echo 'Plik wysłany tylko częściowo.'; 
    break;

Oraz polecam zainteresować się PSR-7:

http://www.php-fig.org/psr/psr-7/

3 odpowiedzi

0 głosów
odpowiedź 13 grudnia 2016 przez event15 Szeryf (93,790 p.)
Switch case nie potrzebuje klamer w obrębie jednego case.

To co napisałeś sugeruje że gdzieś masz pętlę. W kodzie jej nie widzę. Undefined index oznacza wyłącznie tyle, że w tablicy $_FILES['obrazek'] brak kluczy takich jak te, które Ci wywalają.
komentarz 13 grudnia 2016 przez ThePatrykOOO Dyskutant (8,400 p.)
to jak powienienem poprawić skrypt aby on poprawnie działał lub podeślij jakiś skrypt działający
komentarz 13 grudnia 2016 przez event15 Szeryf (93,790 p.)
Przede wszystkim chyba sobie żartujesz że wyślę Ci gotowca.

Następnie, dałeś ochłap kodu, który nie jest jego całą funkcjonalnością i wymagasz szklanej kuli. Plik po prostu nie istnieje więc sobie go stwórz jeśli Ci potrzeba.
0 głosów
odpowiedź 13 grudnia 2016 przez xandros Nałogowiec (29,450 p.)

Jeszcze takie pytanie: czy wysyłasz formularz jako multipart?

Ogólnie to sprawdź funkcją var_dump(), co masz w $_FILES;

var_dump($_FILES);

 

0 głosów
odpowiedź 13 grudnia 2016 przez ThePatrykOOO Dyskutant (8,400 p.)
Czy zna ktoś jakiś materiał, który pozwoli nauczyć mi się zrobienia takich rzeczy?

Podobne pytania

0 głosów
1 odpowiedź 153 wizyt
pytanie zadane 23 lipca 2016 w PHP przez DawidxD Użytkownik (810 p.)
0 głosów
3 odpowiedzi 493 wizyt
pytanie zadane 16 sierpnia 2016 w PHP przez Mistrz0000000 Bywalec (2,780 p.)
0 głosów
1 odpowiedź 171 wizyt
pytanie zadane 6 maja 2021 w PHP przez TheDarkSide Użytkownik (930 p.)

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...