Gå til innhold

Guide: PHP- & MySQL-innføring: Kapittel 6


Anbefalte innlegg

Videoannonse
Annonse

Fint dette, men jeg lurer litt på hvorfor man lærer vekk $_REQUEST og ikke $_GET og $_POST først. Jeg ser det har med et avsnitt om det, men om ikke php.ini er satt opp riktig (selv om det er standard) eller du gjør noen feil i koden så _kan_ dette åpne for CSRF/XSS-angrep.

Jeg anser det som en dårlig standard og lite fordelaktig i lengden, da jeg har erfaring med problemer som oppstår i forbindelse med cookies og at det er vanskelig å lese koden i ettertid. Minner om prinsippet om at koden helst bør være så lettlest at man ikke trenger kommentarer (uten at det skal bli dårlige ytelse selvfølgelig).

 

Strengt talt er vel ikke noe mer en htmlentities nødvendig for å vaske en streng, da man ofte ønsker å få med alt brukeren skriver (f.eks. om jeg vil paste kode).

 

Ellers fin innføring, lærte mye av den da den kom i sin tid!

Endret av Eikern
Lenke til kommentar

Fint dette, men jeg lurer litt på hvorfor man lærer vekk $_REQUEST og ikke $_GET og $_POST først. Jeg ser det har med et avsnitt om det, men om ikke php.ini er satt opp riktig (selv om det er standard) eller du gjør noen feil i koden så _kan_ dette åpne for CSRF/XSS-angrep.Jeg anser det som en dårlig standard og lite fordelaktig i lengden, da jeg har erfaring med problemer som oppstår i forbindelse med cookies og at det er vanskelig å lese koden i ettertid. Minner om prinsippet om at koden helst bør være så lettlest at man ikke trenger kommentarer (uten at det skal bli dårlige ytelse selvfølgelig).Strengt talt er vel ikke noe mer en htmlentities nødvendig for å vaske en streng, da man ofte ønsker å få med alt brukeren skriver (f.eks. om jeg vil paste kode).Ellers fin innføring, lærte mye av den da den kom i sin tid!

 

Spørsmålet er vel, hvem i verden bruker php ?

Lenke til kommentar
?
Spørsmålet er vel, hvem i verden bruker php ?

Programutvikling handler om å løse problemer. PHP er et ustrukturert, rotete, men UTROLIG lettvint og enkelt verktøy for å løse disse problemene. Klart man kan bruke Perl, *.NET etc., men av og til er det lettere å både lære, implementere og utvikle programmer i PHP for hobbykodere som meg. Så om ikke det skal være alt for skalerbart så kan man godt bruke upraktiske hammere ( PHP Hammer).

 

 

Lenke til kommentar
Fint dette, men jeg lurer litt på hvorfor man lærer vekk $_REQUEST og ikke $_GET og $_POST først. Jeg ser det har med et avsnitt om det, men om ikke php.ini er satt opp riktig (selv om det er standard) eller du gjør noen feil i koden så _kan_ dette åpne for CSRF/XSS-angrep.Jeg anser det som en dårlig standard og lite fordelaktig i lengden, da jeg har erfaring med problemer som oppstår i forbindelse med cookies og at det er vanskelig å lese koden i ettertid. Minner om prinsippet om at koden helst bør være så lettlest at man ikke trenger kommentarer (uten at det skal bli dårlige ytelse selvfølgelig).Strengt talt er vel ikke noe mer en htmlentities nødvendig for å vaske en streng, da man ofte ønsker å få med alt brukeren skriver (f.eks. om jeg vil paste kode).Ellers fin innføring, lærte mye av den da den kom i sin tid!
Spørsmålet er vel, hvem i verden bruker php ?

 

Hva med... Facebook, Yahoo, Digg og Wikipedia f.eks?

Lenke til kommentar
Fint dette, men jeg lurer litt på hvorfor man lærer vekk $_REQUEST og ikke $_GET og $_POST først. Jeg ser det har med et avsnitt om det, men om ikke php.ini er satt opp riktig (selv om det er standard) eller du gjør noen feil i koden så _kan_ dette åpne for CSRF/XSS-angrep.Jeg anser det som en dårlig standard og lite fordelaktig i lengden, da jeg har erfaring med problemer som oppstår i forbindelse med cookies og at det er vanskelig å lese koden i ettertid. Minner om prinsippet om at koden helst bør være så lettlest at man ikke trenger kommentarer (uten at det skal bli dårlige ytelse selvfølgelig).Strengt talt er vel ikke noe mer en htmlentities nødvendig for å vaske en streng, da man ofte ønsker å få med alt brukeren skriver (f.eks. om jeg vil paste kode).Ellers fin innføring, lærte mye av den da den kom i sin tid!
Spørsmålet er vel, hvem i verden bruker php ?

 

Spørsmålet er vel heller hvem er det som stiller et slikt spørsmål? PHP er et ypperlig språk til sitt brukt.

Lenke til kommentar

Det er flott med slike tiltak som dette. Men, det finnes utrolig lite oversikt koden. Samt dere viser ikke mye til enkle snarveier. Dere skriver følgende:

<form method="POST" action="6-13.php">
<?php
   $array = $_REQUEST['array'];
   for ($nr = 1; $nr < 10; $nr++)
   {
?>
 <p>Felt <?php echo $nr; ?>:
  <input type="text"
	  name="array[<?php echo $nr; ?>]"
	  value="<?php
   if ($array[$nr])
    echo htmlentities(strip_tags($array[$nr]));
?>" />
   </p>
<?php
   }
?>
 <p><input type="submit" value="Send inn" /></p>
</form>

 

Men er det ikke mer oversiktelig om vi gjør noe ligenende:

<?php
echo "<form method='POST' action='6-13.php'>\n";
   $array = $_REQUEST['array'];

   for ($nr = 1; $nr < 10; $nr++) {
   $number = ($array[$nr] ? htmlentities(strip_tags($array[$nr])) : '');

   echo "<p>Felt $nr:\n";
   echo "<input type='text' name='".array[$nr]."' value='{$number}'/>\n";
   echo "</p>\n"
   }
   echo "<p><input type='submit' value='Send inn' /></p>\n";
echo "</form>\n";
?>

 

Om en nå først skal veksle mellom php, og html på en slik måte som eksempelet deres viser så vil følgende være kortere, og mer oversiktelig:

<?php echo $nr; ?>
--Alternativet er noen hakk kortere:
<?=$nr?>

Endret av warpie
  • Liker 2
Lenke til kommentar

Der du har mange "input felter" hvor alle er påkrevd, der kan du muligens sjekke om alle er fylt ut, uten å lage unødvendig lang (kjedelig?) kode, men kjeldent nødvendig.

 

Deler uansett:

<form name='form1' method='post'>
   <input type='text' name='a' value='test' /><br />
   <input type='text' name='b' value='test' /><br />
   <input type='text' name='c' value='test' /><br />
   <input type='text' name='d' value='test' /><br />
   <input type='submit' name='submit' value='lagre' />
</form>
<?php
if(isset($_POST['submit'])) {
   $data = array_keys($_POST);
   $error = False;
   for($i=0;$i<=sizeof($data)-2; $i++) { //minus 2 = fjerner unødvendig validering.
   if(empty($_POST[$data[$i]])) $error .= $i;
   //Evt. annen validering.
   }
   echo (!$error ? "Vi kan fortsete! " : "Fyll inn alle felter!");
}
?>

 

Lignende løsning kan en kansje også bruke i flere andre situasjoner. En kan bruke modulo, eller enkel if/else-statement for å hoppe over enkelte, eller validere dem ekstra. f. eks sjekk om det inneholder flere ord, tegn eller nummer.

Endret av warpie
Lenke til kommentar

Spørsmålet er vel heller hvem er det som stiller et slikt spørsmål? PHP er et ypperlig språk til sitt brukt.

 

Nei. Det er ingenting PHP er ypperlig til. PHP er forferdelig i alt. Det er ingenting som er bra med PHP. Det er helt grunnleggende designfeil i språket og standardbiblioteket, og det er gjennomgående dårlig eller ikke gjennomtenkt.

Lenke til kommentar

Selv om jeg er enig i mye av det du nevner - og foretrekker andre språk selv, synes jeg det blir helt feil å avskrive PHP helt. Det er antageligvis det "kjappeste" språket for webutvikling (tid fra koding til resultat), er veldig fleksibelt og ikke minst, utrolig enkelt.

 

Tar man utgangspunkt i et solid rammeverk har man også grunnlaget for en skalerbar løsning, men dette krever riktignok at man er bevist til dette fra start.

 

Det kan selvsagt tenkes at vi ser på språket fra to forskjellige synsvinkler, noe som kan være ganske avgjørende for å bedømme om PHP er et godt språk eller ei.

Lenke til kommentar

Selv om jeg er enig i mye av det du nevner - og foretrekker andre språk selv, synes jeg det blir helt feil å avskrive PHP helt. Det er antageligvis det "kjappeste" språket for webutvikling (tid fra koding til resultat), er veldig fleksibelt og ikke minst, utrolig enkelt. Tar man utgangspunkt i et solid rammeverk har man også grunnlaget for en skalerbar løsning, men dette krever riktignok at man er bevist til dette fra start. Det kan selvsagt tenkes at vi ser på språket fra to forskjellige synsvinkler, noe som kan være ganske avgjørende for å bedømme om PHP er et godt språk eller ei.

 

Som programmeringsspråk er PHP helt elendig. Dette er bundlet med et rammeverk som er helt jævlig.

- Funksjonen for verdens mest halvhjertede implementasjon av closure i et programmeringsspråk er en minnelekasje og burde ikke benyttes.

- Ternary er høyrehåndsassosierende som gjør at du må bruke paranteser hvor det burde vært unødvendig og er det i alle andre språk.

- Ingen lambdauttrykk, og delegering er helt dust tungvint (call_user_func)

- Funksjoner returnerer forskjellige typer der det ikke er noe poeng at den gjør det

- Navngivning av funksjoner er helt vilkårlig

- Ingen navnerom

- Ufattelig tungvin implementasjon av objektorientering

- ingen støtte for Unicode og byte order mark!

- Helt dust svakt typesystem

- Massevis av implementasjoner av forskjellige databasesystemer istedet for å gjøre som alle andre og lage et felles interface.

- Oppfordrer til bruk av echo for å generere dokumenter

 

Nær sagt alle andre språk nord for batch-script gjør disse oppgavene bedre enn PHP.

Lenke til kommentar

Er på ingen måter uenig der, men jeg tror faktisk PHP har støtte for navnerom (nytt i PHP 5.3), og det er ikke helt strippet for Unicode. En standard installasjon av PHP er det, men legger man på mbstring får man iallfall litt Unicode. Allikevel, jeg vil ikke si at resultatet har noen direkte god støtte, men heller en tildels elendig en, og vi kan nok fortsatt se langt etter ordentlig Unicode i PHP med det første. Hvor lenge har det vært under arbeid nå? 7 år nå snart? Det lover iallfall meget bra når de måtte skrape hele implementasjonen for 2-3 år siden og starte på nytt. Det vitner i grunn om hvor mye erfaring disse gutta har med Unicode fra før … Uansett, det er jo lov å hope det blir bedre enn MySQL, de sitter jo tross alt fastlåst i Unicode 3.0 som «bare» er 13 år gammelt nå snart.

 

 

… og når vi nå snakker om Unicode. Hvorfor i alle dager anbefaler man i artikkelen/guiden å bruke styggdom som htmlentities over htmlspecialchars? Såvidt jeg veit finnes det jo tross alt ikke html entiteter for noe annet enn ISO-8859-1, og da faller jo hele poenget bort. Det er jo tross alt bare å bruke ISO-8859-1 over hele fjøla, så fungerer det over alt, og de du faktisk ville ha bort tar htmlspecialchars.

Endret av Ernie
Lenke til kommentar
Vi begynner med noe så enkelt som å validere et telefonnummer.

Det er et enkelt eksempel slik dere bruker det ja, men hvorfor lære bort dårlig praksis når du i stedet kan finne på et annet eksempel som ikke bare er galt. :/

 

Og die er som mange andre konstruksjoner dere omtaler som funksjoner, ikke funksjoner.

Lenke til kommentar

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