PHP și HTML interacționează foarte mult: PHP poate genera HTML, iar HTML poate transmite informații către PHP. Înainte de a citi aceste întrebări frecvente, este important să învățați cum să preluați variabile din surse externe. Pagina manuală pe acest subiect include și multe exemple.
ce codare / decodare am nevoie atunci când trec o valoare printr-un formular/URL?
există mai multe etape pentru care codificarea este importantă., Presupunând că aveți un șir de date$, care conține șirul pe care doriți să îl transmiteți într-un mod necodificat, acestea sunt etapele relevante:
-
interpretare HTML. Pentru a specifica un șir aleatoriu, trebuie să îl includeți în ghilimele duble și htmlspecialchars () întreaga valoare.
-
URL: un URL este format din mai multe părți. Dacă doriți ca datele dvs. să fie interpretate ca un singur element, trebuie să le codificați cu urlencode().,
Exemplu #1 O ascunse HTML element de formular
<?php
echo '<input type="hidden" value="' . htmlspecialchars($data) . '" />'."\n";
?>
Notă: este greșit să urlencode() $de date, pentru că e browserele responsabilitatea de a urlencode() datelor. Toate browserele populare fac acest lucru corect. Rețineți că acest lucru se va întâmpla indiferent de metodă (adică, GET sau POST). Veți observa acest lucru doar în cazul solicitării GET, deoarece solicitările POST sunt de obicei ascunse.,
Notă: datele sunt prezentate în browser-ul ca fiind destinate, deoarece browser-ul va interpreta HTML scăpat simboluri. La trimiterea, fie prin GET sau POST, datele vor fi urlencoded de browser pentru transferul, și direct urldecoded de PHP. Deci, în cele din urmă, nu aveți nevoie pentru a face orice urlencoding/urldecoding-te, totul este manipulat automagic.,
Exemplu #3 Într-un URL
<?php
echo '<a href="' . htmlspecialchars("/nextpage.php?stage=23&data=" .
urlencode($data)) . '">'."\n";
?>
Notă: de fapt te prefaci o IA HTML cerere, prin urmare, este necesar să manual urlencode() datele.
Notă: Trebuie să htmlspecialchars() URL-ul întreg, deoarece URL-ul apare ca valoare a unui atribut HTML. În acest caz, browser-ul va mai întâi un-htmlspecialchars() valoarea, și apoi trece URL-ul pe. PHP va înțelege URL-ul corect, pentru că urlencode () d datele., Veți observa că
&
din URL este înlocuit cu&
. Deși majoritatea browserelor se vor recupera dacă uitați acest lucru, acest lucru nu este întotdeauna posibil. Deci, chiar dacă URL-ul dvs. nu este dinamic, trebuie să htmlspecialchars() URL-ul.
încerc să folosesc un <input type=”image”> tag-ul, dar $foo.x și $ foo.variabilele y nu sunt disponibile. Nici $_GET nu există. Unde sunt?,
atunci Când depune un formular, este posibil să utilizați o imagine în loc de standard butonul submit cu o etichetă, cum ar fi:
<input type="image" src="https://www.php.net/manual/en/faq.html.phpimage.gif" name="foo" />
atunci Când utilizatorul face clic undeva pe imagine, care însoțesc formularul va fi transmis la server cu alte două variabile: foo.x și foo.y.
Pentru că foo.x și foo.y ar face nume de variabile nevalide în PHP, acestea sunt convertite automat în foo_x și foo_y. adică perioadele sunt înlocuite cu sublinieri., Deci, veți accesa aceste variabile ca orice alt descris în secțiunea privind preluarea variabilelor din surse externe. De exemplu, $_GET.
notă:
spațiile din numele variabilelor de cerere sunt convertite în sublinieri.
Cum pot crea tablouri într-un HTML <formular>?,
Pentru a obține <formular> rezultat trimis ca o matrice pentru script PHP vă numele <introducere>, <selectați> sau <textarea> elemente de genul asta:
<input name="MyArray" /><input name="MyArray" /><input name="MyArray" /><input name="MyArray" />
Observați paranteze pătrate după numele variabilei, asta e ceea ce face o matrice., Puteți grupa elementele în diferite tablouri prin atribuirea același nume la diferite elemente:
<input name="MyArray" /><input name="MyArray" /><input name="MyOtherArray" /><input name="MyOtherArray" />
Aceasta produce două tablouri, MyArray și MyOtherArray, care devine trimise la scriptul PHP. Este de asemenea posibil de a atribui taste specifice pentru tablouri dvs.:
<input name="AnotherArray" /><input name="AnotherArray" /><input name="AnotherArray" /><input name="AnotherArray" />
La AnotherArray serie va conține cheile 0, 1, e-mail și telefon.
notă:
specificarea tastelor matrice este opțională în HTML., Dacă nu specificați cheile, matricea se completează în ordinea în care elementele apar în formular. Primul nostru exemplu va conține cheile 0, 1, 2 și 3.
a se vedea, de asemenea, funcții matrice și variabile din surse externe.
cum obțin toate rezultatele dintr-o etichetă HTML selectă multiplă?
eticheta selectați Mai multe într-un construct HTML permite utilizatorilor să selecteze mai multe elemente dintr-o listă. Aceste elemente sunt apoi transmise manipulatorului de acțiune pentru formular. Problema este că toate sunt transmise cu același nume de widget. Adică.,
<select name="var" multiple="yes">
Fiecare opțiune selectată va ajunge la acțiune handler ca:
var=option1var=option2var=option3
Fiecare opțiune va suprascrie conținutul anterior $variabilei var. Soluția este să folosiți funcția PHP „array from form element”. Trebuie utilizate următoarele:
<select name="var" multiple="yes">
acest lucru spune PHP să trateze $var ca o matrice și fiecare atribuire a unei valori la var adaugă un element la matrice. Primul element devine $ var, următorul $ var etc., Funcția count() poate fi utilizată pentru a determina câte opțiuni au fost selectate, iar funcția sort () poate fi utilizată pentru a sorta matricea de opțiuni, dacă este necesar.
rețineți că, dacă utilizați JavaScript, de pe numele elementului vă poate cauza probleme atunci când încercați să vă referiți la elementul după nume. Utilizarea e formă numerică element ID-ul în loc, sau încadrați numele variabilei în ghilimele simple și de a folosi ca index pentru elementele de matrice, de exemplu:
variable = document.forms.elements'];
Cum pot trece o variabilă de Javascript PHP?,
deoarece Javascript este (de obicei) o tehnologie client-side, și PHP este (de obicei) o tehnologie server-side, și din moment ce HTTP este un protocol „stateless”, cele două limbi nu pot partaja direct variabile. cu toate acestea, este posibil să se treacă variabile între cele două. O modalitate de a realiza acest lucru este de a genera cod Javascript cu PHP, și au browser-ul reîmprospăta în sine, trecerea variabile specifice înapoi la script-ul PHP. Exemplul de mai jos arată exact cum se face acest lucru-permite codului PHP să capteze înălțimea și lățimea ecranului, lucru care este posibil în mod normal numai pe partea clientului.,