Trimiterea de fișiere prin intermediul unui formular - web-studio Andrey moskalyukova

Evaluare: 0/5

În acest articol, considerăm situația cu trimiterea standard de e-mail-mail fișier caracteristică ().

Crearea unui formular simplu.



Atașați un fișier:


Și doar o mică explicație. Dacă doriți să trimiteți fișierul, în forma în care este necesar să se stabilească enctype atribut este setat la „multipart / form-date“. în caz contrar, nu vor fi trimise fișierele. Acest atribut specifica metoda de codificare a datelor, iar implicit este setat la „application / x-www-form-urlencoded“.

În acest caz, trimiterea de formular de date are loc prin poștă (care este indicat în forma: metoda = „post“) folosind intrarea de diferite tipuri de etichete. Tip intrare fișier tag-ul - trimite fișierul.

tag-ul de intrare este, probabil, cea mai comună formă de tag-ul, care are mai multe tipuri. În forma noastră prezentă, de asemenea, eticheta de tip de introducere a textului. care primește și transmite valoarea de text. „Trimite“, acest tip de intrare, de asemenea, să prezinte tag-ul.

desen . Se spune că, în formă handler efectuează fișierul în sine. De asemenea, pot fi înregistrate, de asemenea, în așa fel /articles/trimiterea-de-fisiere-prin-intermediul-unui.html. În orice caz, $ PHP_SELF și $ SERVER [ 'PHP_SELF'] - superglobals, dintre care punerea în funcțiune trebuie să fie verificate. Prin urmare, recomandăm utilizarea unor modificări de design . în care intrarea php_self trece prin htmlspecialchars () funcția.

Să revenim la forma. Cum de a trimite un fișier prin intermediul formularului știm, acum să vedem cum să accepte și să proceseze fișierul de pe partea de server.

Valorile text forma de intrare tag-uri de tip text. parola. ascuns. radio. și textarea și selectați etichetele primite la server prin superglobalele matrice $ _POST sau $ _GET (în funcție de informațiile sub forma a) expresie de tip

$ Utilizator = htmlspecialchars (stripslashes ($ _POST [ 'username']), ENT_QUOTES).

În această expresie, există anumite funcții htmlspecialchars php și stripslashes. Primul convertește caractere speciale în entități HTML. De exemplu, '' (ampersand) devine - ''<' (знак "меньше чем") преобразуется в '<'. Вторая удаляет экранирующие бэкслэши. (\' преобразуется в ', и т.д.).

Dacă primiți valori de text de complexitate deosebită este nu, atunci transferul de fișiere se produce prin $ _FILES superglobale un pic mai complicate. Această matrice oferă acces la o varietate de date despre fișier acceptate:

$ _FILES [ 'fileup'] [ 'nume'] - numele fișierului transferat
$ _FILES [ 'fileup'] [ 'tmp_name'] - numele unui fișier temporar pe server
$ _FILES [ 'fileup'] [ 'tip'] - tipul fișierului primit
$ _FILES [ 'fileup'] [ 'dimensiune'] - dimensiunea fișierului în octeți
$ _FILES [ 'fileup'] [ 'eroare'] - codul de eroare

Acceptați fișierul pe partea de server poate fi ca aceasta:

Verifică mai întâi dacă fișierul a primit, și apoi atribuirea unor valori variabile la datele de fișier care pot fi ulterior utilizate pentru diverse inspecții. Vom verifica tipul de fișier primit. În cazul nostru, se presupune că fișierul a primit este de a fi o arhivă zip. Adoptat de fișier (dacă este de tip zip) este copiat cu un nume nou în directorul rădăcină al site-ului. Când fișierul este procesat, trebuie să ne amintim că un fișier temporar va fi șters automat după sfârșitul script-ul, și fișierul copiat după prelucrare va trebui să vă eliminați nu „polueze“ server.

Datele sunt primite. Acum este necesar să se trimită fișierul primit prin e-mail.

Pentru a trimite va utiliza standard PHP functia mail (). care are formatul: e-mail ( „cine“, „subiectul“, „corpul scrisorii“, „antetele“);

Pregătiți-vă pentru a scrie titluri.

Dacă nu am avea de a trimite fișierul atașat la mesaj, antetele ar putea arata astfel:

$ Header = "De la: nu-răspuns @" $ _ SERVER [ 'HTTP_HOST'] „\ r \ nContent-Type: text / html; charset = 'ferestre-1251' \ r \ nContent-Transfer-Encoding: .. 8bit \ r \ n „;

Aceasta specifică de la care litera (De la.), Tastați litera textului și codificarea acesteia (Content-Type: text / html; charset = 'ferestre-1251') și numărul de biți pentru a codifica caractere (Content-Transfer-Encoding: 8bit). Pentru codificări chirilice (KOI8-R, KOI8-u, ferestre-1251, izo-8859-5, cp866) pentru a specifica numărul de biți este foarte de dorit, dacă nu doriți să fie semne de întrebare în loc de text. Codul \ r \ n este codurile de desemnare „carriage return“ și „linia de transfer“ (capătul liniei, astfel desemnate în Windows)

Vrei să afli mai multe? Faceți clic pe „Like“

În cazul în care e-mail are un atașament ca fișier, pregătirea antet este complicată, schimbarea și corpul mesajului. Avem nevoie pentru a citi fișierul într-o variabilă, și de a converti să aplice într-o formă modificată, în conformitate cu marcajul. Se va arăta în felul următor:

Rămâne doar pentru a trimite email-uri și de a șterge fișierul primit.

mail funcție () returnează adevărat sau fals în funcție de rezultatul trimiterii scrisorii.