Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  10 1088
Som tittelen sir, jeg er på jakt etter triks/snarveier i php.
Det er sikker mange dyktige og erfarne PHP programmere der ute.

Jeg kom til å tenke på at både $_POST og $_GET[] er jo arrayer, så i steden for å spesial skrive applikasjonen til å escape spesial tegn så kan man jo escpace hele arrayen, med foreach.

Noe slikt:

Kode

foreach ($_POST as $value)
{
   mysql_real_escape_string($value);
}
Eneste som er problemet er jo å få den tilbake med riktig navn, sånn at $_POST['text'] blir hetende $text f.eks?

Er det noen som kan løse problemet mitt, eller vet om andre triks som kan gjøre php kodingen eklere å kortere?
Vel, f. eks Ternary Operator er jo fint å bruke fremfor et tungt if-helvete.

Istedet for å skrive:

Kode

if( empty($dyr) )
{
   $var = 'Ape';
}
else
{
   $var = 'Katt';
}
Kan du raskere skrive:

Kode

$var = empty($dyr) ? 'Ape' : 'Katt';
Du kan også se mer på siden; 5 tips to write shorter PHP code.
Sist endret av boblesaft; 21. juli 2009 kl. 10:38.
Det du er ute etter finnes allerede i PHP, magic quotes ( http://no2.php.net/magic_quotes ) kan escape all input og register globals ( http://no.php.net/manual/en/ini.core...gister-globals ) kan gi deg direktetilgang til input som vanlige variable.

Disse blir begge sette på som veldig uheldig å bruke, siden de gir mange potensielle sikkerhetsproblemer. Derfor er begge disse fjernet i PHP 6. PHP-manualen gir en del eksempler på hvorfor.
Sitat av Masi Vis innlegg
Jeg kom til å tenke på at både $_POST og $_GET[] er jo arrayer, så i steden for å spesial skrive applikasjonen til å escape spesial tegn så kan man jo escpace hele arrayen, med foreach.

Noe slikt:

Kode

foreach ($_POST as $value)
{
   mysql_real_escape_string($value);
}
Eneste som er problemet er jo å få den tilbake med riktig navn, sånn at $_POST['text'] blir hetende $text f.eks?
Vis hele sitatet...

Kode

foreach ($_POST as $key => $value)
{
   $_POST[$key] = mysql_real_escape_string($value);
}
Sitat av Masi Vis innlegg
sånn at $_POST['text'] blir hetende $text f.eks
Vis hele sitatet...

Kode

foreach ($_POST as $key => $value)
{
   $_POST [$key] = mysql_real_escape_string($value);
} 

extract($_POST);

echo $text;
Sist endret av marfo; 21. juli 2009 kl. 11:23. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Eller array_map

Kode

$_POST = array_map('mysql_real_escape_string', $_POST);
Ellers er det et veldig åpent spørsmål du stiller, det er vanskelig å komme med tips uten å egentlig vite hva du programmerer. Sånn generelt er det lurt å ikke skrive samme kode om og om igjen, men heller å lage funksjoner for gjenbruk. Når du kommer mer inn i PHP kan du også begynne å lese om OOP.
Trådstarter
Sitat av ma10as Vis innlegg
Eller array_map

Kode

$_POST = array_map('mysql_real_escape_string', $_POST);
Ellers er det et veldig åpent spørsmål du stiller, det er vanskelig å komme med tips uten å egentlig vite hva du programmerer. Sånn generelt er det lurt å ikke skrive samme kode om og om igjen, men heller å lage funksjoner for gjenbruk. Når du kommer mer inn i PHP kan du også begynne å lese om OOP.
Vis hele sitatet...
Spørsmålet er ganske så åpent. For det finnes mange måter å korte ned/forenkle/oversiklig gjøre/sikre koden, som tenary opertators, lage funksjoner/classer, escape POST/GET for farlige tegn øverst i scriptet.. osv.
Eller hvis det er folk som vet om PHP extension som livet som programmere enklere så er det bare å poste den her.

Meningen er at tråden skal være ganske åpen, så folk kan poste de måtene dem mener at koden blir bedre på.

Har ett mer konkret spørsmål: Er det muligt å få en fil til å includeres uansett korsen fil man går inn på.

Litt bedre forklart:
Hvis jeg har f.eks 4 filer:
index.php
forum.php
registrer.php
header.php

Er det muligt å få header.php til å være includert uansett om man går inn på index.php, forum.php eller registrer.php uten å skrive include "header.php" i hver av filene?
Sist endret av Masi; 25. juli 2009 kl. 05:17. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Du kan inkludere forum.php, register.php osv i index.php filen isteden - altså snu opp på det du kanskje gjør nå.
Trådstarter
Sitat av fredrikweb Vis innlegg
Du kan inkludere forum.php, register.php osv i index.php filen isteden - altså snu opp på det du kanskje gjør nå.
Vis hele sitatet...
Joda, men det gjør jo ikke akkurat programmeringen noe letter.

La oss si at man lager ett svært CMS system, med masse filer. Så er det jo greit å fordele systemet over på forskjellige filer?
Så da hadde det kanskje vært greit om man kunne includere f.eks en header fil i alle filene uten å skrive include "header.php" i alle?
Lazywriter
Gisse's Avatar
Det du kan gjøre er å lage en kodesnutt som du legger i index.php der du velger at hvis $_GET ikke er satt, så inkluderer du standard/forsiden "includes/hei.php". Hvis det er noe satt i $_GET, inkluderer du siden som er satt i $_GET ut i fra includes mappa. F.eks hvis adressen er index.php?page=forum så er forum en fil i includes mappa. Hvis filen som ønskes å inkludere ikke finnes, f.eks hvis adressen er index.php?page=sadasdad så vil den printe ut en feilmelding.

Deretter bruker du index.php som hovedfil og inkluderer innhold inn der. Da kan du ha en header, en meny, en footer osv. på index.php og bare innhold som blir inkludert fra includes folderen.

Dette scriptet er et eksempel på et slikt script.

En annen måte er å bruke MVC. Hvis noen kan fortelle om andre måter er jeg interessert i å lese om det
Trådstarter
Sitat av Gisse Vis innlegg
Det du kan gjøre er å lage en kodesnutt som du legger i index.php der du velger at hvis $_GET ikke er satt, så inkluderer du standard/forsiden "includes/hei.php". Hvis det er noe satt i $_GET, inkluderer du siden som er satt i $_GET ut i fra includes mappa. F.eks hvis adressen er index.php?page=forum så er forum en fil i includes mappa. Hvis filen som ønskes å inkludere ikke finnes, f.eks hvis adressen er index.php?page=sadasdad så vil den printe ut en feilmelding.

Deretter bruker du index.php som hovedfil og inkluderer innhold inn der. Da kan du ha en header, en meny, en footer osv. på index.php og bare innhold som blir inkludert fra includes folderen.

Dette scriptet er et eksempel på et slikt script.

En annen måte er å bruke MVC. Hvis noen kan fortelle om andre måter er jeg interessert i å lese om det
Vis hele sitatet...
Jeg er klar over den muligheten, tenkte på den når jeg skrev forrige post. Men det er vel ikke det som er svaret på spørsmålet mitt.

Jeg tenkte mer i retning av at det finnes noen Globale Variabler som gjør dette eller slik i PHP 5 serveren. Apache + PHP.

Kode

$f = "carpal_tunnel_syndrome_inducing_function_name";
$a = $f($a);
$b = $f($b);

Kode

foreach (array(1,2,3) as $x) foreach (array(1,2,3) as $y) {
    ${"c_".$x."_".$y} = htmlspecialchars($_POST['c'][$x][$y]);
}
Eller noe slikt.