objorkum Skrevet 14. januar 2005 Del Skrevet 14. januar 2005 Har eit script som er slik: <? $send = $_GET["send"]; if ($send == "1") { function(); } else { echo "Something"; } ?> Kvar gong eg går innpå sida kjem det ein error i loggen til Apache som er slik: [error] PHP Notice: Undefined index: send in /home/objorkum/public_html/objorkum/contact.php on line 5 Skjønar jo at det kjem av at $send ikkje er definert, men korleis skal eg hindre at det vert logga? Lenke til kommentar
???????? Skrevet 15. januar 2005 Del Skrevet 15. januar 2005 Skjer dette når $_GET["send"] ikke har noen verdi? I så fall virker det som du/serveren kjører den anbefalte versjonen av php.ini. De fleste servere kjører uten å vise error av denne typen. Hvis det ikke er din server så kan du ikke endre php.ini, men du kan likevel hindre at erroren vises: 1. du kan gi variabelen verdien false 2. se error_reporting() i manualen og endre den til det du ønsker. error_reporting(E_ALL ^ E_NOTICE) er den vanligste, den viser ikke feil av typen notice. Lenke til kommentar
objorkum Skrevet 15. januar 2005 Forfatter Del Skrevet 15. januar 2005 (endret) Ja poenget er at om URLen har &send=1 så skal den gjere noko, ellers ikkje. Ja det er min server, og køyrer php.ini-recommended, med litt mods. Treng vel strengt talt ikkje bry meg om det vel? Endret 15. januar 2005 av objorkum Lenke til kommentar
objorkum Skrevet 15. januar 2005 Forfatter Del Skrevet 15. januar 2005 ; - error_reporting = E_ALL [Code Cleanliness, Security(?)] ; By default, PHP surpresses errors of type E_NOTICE. These error messages ; are emitted for non-critical errors, but that could be a symptom of a bigger ; problem. Most notably, this will cause error messages about the use ; of uninitialized variables to be displayed. Forklarar ein del ja. Trur eg berre endrar php.ini. Lenke til kommentar
objorkum Skrevet 15. januar 2005 Forfatter Del Skrevet 15. januar 2005 Hm, fann ut at å bruke dette ikkje lagar nokon "error": if (isset($_GET["send"] && $_GET["send"] == "1") Er det nokon sikkerheitsrisiko å ikkje bruke isset på slikt? Lenke til kommentar
???????? Skrevet 15. januar 2005 Del Skrevet 15. januar 2005 Sikkerhetshull? Det er ikke mulig å svare på, alt du skriver der er hvis variabelen er satt og hvis den er 1. I den koden er er det kun to evalueringer av en variabel. Lenke til kommentar
objorkum Skrevet 15. januar 2005 Forfatter Del Skrevet 15. januar 2005 Ein skal visst bruke isset på alle variablar i URL, ellers kjem den "erroren". Har eit lite spørsmål som eg ikkje gidd å lage ny post på: Om eg skal ha mykje HTML kode i echo, er det seigt å utkommentere alle " med \", er det mogleg å gjere det automatisk evt på ein annan måte? Lenke til kommentar
Loomy Skrevet 15. januar 2005 Del Skrevet 15. januar 2005 (endret) Ein skal visst bruke isset på alle variablar i URL, ellers kjem den "erroren". Har eit lite spørsmål som eg ikkje gidd å lage ny post på: Om eg skal ha mykje HTML kode i echo, er det seigt å utkommentere alle " med \", er det mogleg å gjere det automatisk evt på ein annan måte? Bruk echo 'Blabla "osv" osv..';, så slipper du å escape fnuttene. Endret 15. januar 2005 av Loomy Lenke til kommentar
jorgis Skrevet 15. januar 2005 Del Skrevet 15. januar 2005 (endret) Husk at echo '$variabel'; skriver teksten "$variabel" rett ut, mens echo "$variabel"; skriver verdien til variabelen, slik det er ment å gjøre. Hvis du skal ha en streng med enkle fnutter rundt og samtidig printe ut variabelverdien, kan du bruke flere strenger med . i mellom: echo 'Varen koster ' . $pris . ' kroner.'; Endret 15. januar 2005 av jorgis Lenke til kommentar
???????? Skrevet 15. januar 2005 Del Skrevet 15. januar 2005 Det kan ofte være enklere å bruke Heredoc, spesielt dersom man skal sette inn mye html. Se Heredoc. Lenke til kommentar
Vindstille Skrevet 15. mars 2007 Del Skrevet 15. mars 2007 Husk at echo '$variabel'; skriver teksten "$variabel" rett ut, mens echo "$variabel"; skriver verdien til variabelen, slik det er ment å gjøre. Hvis du skal ha en streng med enkle fnutter rundt og samtidig printe ut variabelverdien, kan du bruke flere strenger med . i mellom: echo 'Varen koster ' . $pris . ' kroner.'; 3502988[/snapback] Med å bruke . vil strengen først bli lagt sammen til én streng før den blir printet ut med echo. En bittelitt raskere måte å gjøre det på er ved å bruke komma istedenfor punktum. echo 'Varen koster ' , $pris , ' kroner.'; Echo funsjonen vil da (så vidt jeg har skjønt) skrive ut koden hver for seg uten å lage en string først. Å bruke enkeltfnutter vil også være bittelitt raskere enn dobbeltfnutter siden skriptet da ikke trenger å late etter variabler i strengen. (Smart f.eks. på lengre html kode.) Lenke til kommentar
Hobbyhorse73 Skrevet 15. mars 2007 Del Skrevet 15. mars 2007 (endret) <? $send = $_GET["send"]; $send = isset($_GET["send"]) ? htmlentities($_GET["send"]) : ""; // Slik ville jeg ha skrevet linjen. // med htmlentities vil du fjæren muligheten for hacking via $_GET. if ($send == "1") { function(); } else { echo "Something"; } ?> Jaja, jeg så ikke nårtid dette innleget ble startet, bare at det var blitt svart på før i dag. Endret 15. mars 2007 av Hobbyhorse Lenke til kommentar
Vindstille Skrevet 15. mars 2007 Del Skrevet 15. mars 2007 Jaja, jeg så ikke nårtid dette innleget ble startet, bare at det var blitt svart på før i dag. 8162922[/snapback] Det så ikke jeg heller. Men siden det har blitt linket til i en FAQ er det fint det står her alikevel. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå