• 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?

VPS Starter Arubacloud
0 głosów
197 wizyt
pytanie zadane 13 grudnia 2016 w PHP przez ThePatrykOOO Dyskutant (8,380 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,380 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,380 p.)
Czy zna ktoś jakiś materiał, który pozwoli nauczyć mi się zrobienia takich rzeczy?

Podobne pytania

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

92,454 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...