PHP och HTML interagerar mycket: PHP kan generera HTML, och HTML kan skicka information till PHP. Innan du läser dessa vanliga frågor är det viktigt att du lär dig hur du hämtar variabler från externa källor. Manualsidan om detta ämne innehåller också många exempel.
vilken kodning / avkodning behöver jag när jag skickar ett värde via en form / URL?
det finns flera steg för vilka kodning är viktig., Om du antar att du har en sträng $ – data, som innehåller strängen du vill vidarebefordra på ett icke-kodat sätt, är detta de relevanta stegen:
-
HTML-Tolkning. För att ange en slumpmässig sträng måste du inkludera den i dubbla citat och htmlspecialchars() hela värdet.
-
URL: en URL består av flera delar. Om du vill att dina data ska tolkas som ett objekt måste du koda det med urlencode ().,
exempel #1 ett dolt HTML-formelement
<?php
echo '<input type="hidden" value="' . htmlspecialchars($data) . '" />'."\n";
?>
notera: det är fel att urlencode() $data, eftersom det är webbläsarna ansvar att urlencode() data. Alla populära webbläsare gör det korrekt. Observera att detta kommer att hända oavsett metod (dvs GET eller POST). Du kommer bara att märka detta vid GET-förfrågan, eftersom postförfrågningar vanligtvis är dolda.,
Obs! data visas i webbläsaren som avsett, eftersom webbläsaren tolkar HTML-symboler som flydde. Vid inlämning, antingen via GET eller POST, data kommer att urlenkodas av webbläsaren för överföring, och direkt urldecoded av PHP. Så i slutändan behöver du inte göra någon urlencoding / urldecoding själv, allt hanteras automatiskt.,
exempel #3 i en URL
<?php
echo '<a href="' . htmlspecialchars("/nextpage.php?stage=23&data=" .
urlencode($data)) . '">'."\n";
?>
notera: du faktiserar faktiskt en HTML GET-förfrågan, därför är det nödvändigt att manuellt urlencode() data.
Obs: Du måste htmlspecialchars() hela webbadressen, eftersom webbadressen sker som värdet av ett HTML-attribut. I det här fallet kommer webbläsaren först att un-htmlspecialchars () värdet och skicka sedan webbadressen på. PHP kommer att förstå webbadressen korrekt, eftersom du urlencode () d data., Du kommer att märka att
&
I webbadressen ersätts av&
. Även om de flesta webbläsare kommer att återhämta sig om du glömmer detta, Detta är inte alltid möjligt. Så även om din URL inte är dynamisk, måste du htmlspecialchars () webbadressen.
jag försöker använda en<input type=”image”> – tagg, men $foo.x och $foo.y-variabler är inte tillgängliga. $_GET finns inte heller. Var är de?,
När du skickar in ett formulär är det möjligt att använda en bild istället för standard Skicka-knappen med en tagg som:
<input type="image" src="https://www.php.net/manual/en/faq.html.phpimage.gif" name="foo" />
när användaren klickar någonstans på bilden kommer det medföljande formuläret att överföras till servern med ytterligare två variabler: foo.x och foo.y.
Eftersom foo.x och foo.y skulle göra ogiltiga variabelnamn i PHP, de omvandlas automatiskt till foo_x och foo_y. det vill säga perioderna ersätts med understreck., Så, du skulle komma åt dessa variabler som alla andra som beskrivs i avsnittet om att hämta variabler från externa källor. Till exempel $_GET.
Obs:
mellanslag i begär variabelnamn konverteras till understreck.
Hur skapar jag matriser i en HTML<form>?,
för att få ditt< – formulär> – resultat skickat som en array till ditt PHP-skript, namnger du< – inmatningen>,<välj> eller>< textarea > element som detta:
<input name="MyArray" /><input name="MyArray" /><input name="MyArray" /><input name="MyArray" />
märker hakparenteserna efter variabelnamnet, det är det som gör det till en array., Du kan gruppera elementen i olika matriser genom att tilldela samma namn till olika element:
<input name="MyArray" /><input name="MyArray" /><input name="MyOtherArray" /><input name="MyOtherArray" />
detta ger två matriser, MyArray och MyOtherArray, som skickas till PHP-skriptet. Det är också möjligt att tilldela specifika nycklar till dina matriser:
<input name="AnotherArray" /><input name="AnotherArray" /><input name="AnotherArray" /><input name="AnotherArray" />
anotherarray-matrisen innehåller nu nycklarna 0, 1, e-post och telefon.
Obs:
det är valfritt att ange matristangenter i HTML., Om du inte anger nycklarna fylls matrisen i den ordning elementen visas i formuläret. Vårt första exempel kommer att innehålla tangenterna 0, 1, 2 och 3.
Se även Arrayfunktioner och variabler från externa källor.
hur får jag alla resultat från en Välj flera HTML-tagg?
Välj flera tagg i en HTML-konstruktion tillåter användare att välja flera objekt från en lista. Dessa objekt skickas sedan till åtgärdshanteraren för formuläret. Problemet är att de alla skickas med samma widgetnamn. Dvs.,
<select name="var" multiple="yes">
varje valt alternativ kommer fram till åtgärdshanteraren som:
var=option1var=option2var=option3
varje alternativ kommer att skriva över innehållet i den tidigare $var-variabeln. Lösningen är att använda PHP: s” array from form element ” – funktion. Följande bör användas:
<select name="var" multiple="yes">
detta talar om för PHP att behandla $var som en array och varje tilldelning av ett värde till var lägger till ett objekt i matrisen. Det första objektet blir $var, nästa $var, etc., Funktionen count() kan användas för att bestämma hur många alternativ som valts, och funktionen sort() kan användas för att sortera alternativmatrisen om det behövs.
Observera att om du använder JavaScript kan på elementets namn orsaka problem när du försöker referera till elementet med namn. Använd det numeriska formelementet ID istället, eller bifoga variabelnamnet i enstaka citat och använd det som index till elements array, till exempel:
variable = document.forms.elements'];
Hur kan jag skicka en variabel från Javascript till PHP?,
eftersom Javascript (vanligtvis) är en klientbaserad teknik, och PHP är (vanligtvis) en serverbaserad teknik, och eftersom HTTP är ett ”statslöst” protokoll, kan de två språken inte direkt dela variabler.
det är dock möjligt att överföra variabler mellan de två. Ett sätt att åstadkomma detta är att generera Javascript-kod med PHP, och har webbläsaren uppdatera sig, passerar specifika variabler tillbaka till PHP-skript. Exemplet nedan visar exakt hur man gör detta-det tillåter PHP-kod för att fånga skärmens höjd och bredd, något som normalt bara är möjligt på klientsidan.,