Gå til innhold

Mogleg å få vekk error frå logg?


Anbefalte innlegg

Skrevet

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?

Videoannonse
Annonse
Skrevet

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.

Skrevet (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 av objorkum
Skrevet

; - 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.

Skrevet

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?

Skrevet

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.

Skrevet

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?

Skrevet (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 av Loomy
Skrevet (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 av jorgis
  • 2 år senere...
Skrevet
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.)

Skrevet (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 av Hobbyhorse
Skrevet
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.

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...