Τι κάνει η htmlentities() και πότε την χρησιμοποιούμε ???

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
dpa
Δημοσιεύσεις: 631
Εγγραφή: 29 Μαρ 2008 13:55

Τι κάνει η htmlentities() και πότε την χρησιμοποιούμε ???

Δημοσίευση από dpa » 13 Ιούλ 2010 11:22

Παιδιά καλημέρα,

Αυτή η συνάρτηση δεν έχω καταλάβει τι κάνει και πότε την χρησιμοποιούμε.

htmlentities()

είδα το manual της php στα αγγλικά αλλά δεν κατάλαβα.

Ξέρεις κανένας να με ενημερώσει ??

Ευχαριστώ

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

Τι κάνει η htmlentities() και πότε την χρησιμοποιούμε ???

Δημοσίευση από dimsis » 13 Ιούλ 2010 12:04

Αν καταλάβεις τι είναι τα html entities, θα καταλάβεις τι κάνει και αυτή η συνάρτηση:
Entities

Τα entities (οντότητες) είναι μεταβλητές (variables) που χρησιμοποιούνται για να ορίσουν συχνά χρησιμοποιούμενο κείμενο (common text). Οι αναφορές οντοτήτων (entity references) είναι αναφορές σε οντότητες. Είναι γνωστή η εξής αναφορά οντότητας της HTML :   (no-breaking-space), η οποία χρησιμοποιείται για να εισάγουμε έναν επιπλέον κενό χαρακτήρα σ’ ένα έγγραφο. Οι οντότητες αναπτύσσονται όταν ένα έγγραφο γίνεται parsed από έναν XML parser.

Οι ακόλουθες οντότητες είναι προκαθορισμένες (predefined) στην XML :

Αναφορές Οντοτήτων Χαρακτήρας

&lt; <

&gt; >

&amp; &

&quot; "

&apos; '

via: http://dide.flo.sch.gr/Plinet/Tutorials ... s-DTD.html
Με απλά λόγια πες ότι έχεις μια φόρμα όπου καταχωρεί ο χρήστης κείμενο σε αυτό και το αποτέλεσμα καταχωρείται στη βάση δεδομένων σου. Αν σε αυτό το κείμενο ο χρήστης μπορεί να γράψει και html tags αυτά θα καταχωρηθούν κανονικά και μπορεί να σου βγάλουν και πρόβλημα έπειτα στην εμφάνιση σου, όταν δηλαδή εμφανίζεις εσύ αυτά τα δεδομένα από τη βάση σε κάποια σελίδα σου.

Σκέψου ας πούμε να έβαλα εγώ σε ένα δικό σου πεδίο: <table><tr><td>mpla mpla
και να μη τα έκλεισα ποτέ... αν τα δείξεις όπως καταχωρήθηκαν θα σου καταστρέψω το layout της σελίδα σου. Αν όμως τα δείξεις μέσω αυτής της function, αντί για < θα βάζει &lt; και αντί για > το &gt; οπότε δεν θα "εκτελείτε" (render) από τον browser ως HTML κώδικας, αλλά ως ένα απλό κείμενο.

Δεν θα προσπαθούσε δηλαδή ο browser να εμφανίσει ένα table αλλά θα εμφάνιζε ως κείμενο το <table> και τα υπόλοιπα tags.
Αυτό βέβαια μπορεί να γίνει και με άλλους τρόπους, αλλά στο δίνω ως ένα παράδειγμα χρήσης που θα μπορούσε να γίνει για αυτό το function.

dpa
Δημοσιεύσεις: 631
Εγγραφή: 29 Μαρ 2008 13:55

Τι κάνει η htmlentities() και πότε την χρησιμοποιούμε ???

Δημοσίευση από dpa » 13 Ιούλ 2010 12:42

Δηλαδή θα πρέπει να την χρησιμοποιούμε πάντα στα πεδία που κάνουμε post ???

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Τι κάνει η htmlentities() και πότε την χρησιμοποιούμε ???

Δημοσίευση από mrpc » 13 Ιούλ 2010 12:54

Εξαρτάται πάντα από τη χρήση. Γενικά κάθε πεδίο που δεχόμαστε από το χρήστη σε μια εφαρμογή, το περνάμε από κάποια επεξεργασία (φιλτράρισμα) ανάλογα με της ανάγκες μας.

dpa
Δημοσιεύσεις: 631
Εγγραφή: 29 Μαρ 2008 13:55

Τι κάνει η htmlentities() και πότε την χρησιμοποιούμε ???

Δημοσίευση από dpa » 13 Ιούλ 2010 13:46

Παιδιά όταν έχετε χρόνο γράψτε κάτι για την ασφάλεια.

Δώστε ένα παράδειγμα ασφαλούς project.

εγώ χρησιμοποιώ την συνάρτηση stripslahes()

πχ $p = $_POST['Name'];
$c = stripslashes( $p );
$c = trim( $c);

Μπορώ να κάνω κάτι άλλο ?????

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Τι κάνει η htmlentities() και πότε την χρησιμοποιούμε ???

Δημοσίευση από Khronos » 13 Ιούλ 2010 13:51

Ενα στοιχειώδες φιλτράρισμα των δεδομένων που στέλνει ο χρήστης μέσω μιας φόρμας γίνεται έτσι.

Κώδικας: Επιλογή όλων

if&#40;get_magic_quotes_gpc&#40;&#41;&#41; &#123;
    $var = stripslashes&#40;$var&#41;;
&#125;
$var = mysql_real_escape_string&#40;$var&#41;; //αν γίνεται query σε βάση

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Τι κάνει η htmlentities() και πότε την χρησιμοποιούμε ???

Δημοσίευση από mrpc » 13 Ιούλ 2010 13:53

Εξαρτάται πάντα από το τι θέλεις να κάνεις τα δεδομένα σου.
Ένα πολύ βασικό είναι να ελέγχεις πάντα τον τύπο των δεδομένων. Δηλαδή π.χ. σε μια αριθμητική τιμή, μπορείς να ελέγχεις με την is_numeric().
Στις τελευταίες εκδόσεις της PHP έχει μερικές ωραίες function ειδικά για validation και filtering:
http://www.phparch.com/2010/07/08/never-use-_get-again/

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Τι κάνει η htmlentities() και πότε την χρησιμοποιούμε ???

Δημοσίευση από Apostolis_38 » 13 Ιούλ 2010 23:31

dpa έγραψε:εγώ χρησιμοποιώ την συνάρτηση stripslahes()
Γενικώς υπάρχει (ή τουλάχιστον υπήρχε) μια διαμάχη για το αν είναι καλύτερο να χρησιμοποιείς το addslashes ή το mysql_real_escape_string.
Ως συνήθως δεν υπήρξε νικητής :D
Το μόνο σίγουρο είναι οτι δεν μπορείς να αφήσεις "αφιλτράριστα" τα δεδομένα που παίρνεις από το χρήστη και κάτι απ' όλα πρέπει να χρησιμοποιήσεις.
Το ποιό απ' όλα νομίζω οτι είναι καθαρά θέμα του πως "δουλεύεις" τις εφαρμογές σου.
Για παράδειγμα αν δεν έχει προηγηθεί db connect το mysql_real_escape... δεν παίζει.
Οπως και σε περίπτωση που δεν έχει ρυθμιστεί κατάλληλα το php.ini.
Από την άλλη το addslashes για να παίξει σωστά θέλει να μην ξεχάσεις το stripslashes όταν "τυπώνεις" τα δεδομένα. Τι γίνεται όμως όταν θέλεις να αφήσεις τον χρήστη ελεύθερο να καταχωρήσει ορισμένους χαρακτήρες;

Για μένα ο καλύτερος συνδυασμός ανά περίσταση είναι το καλύτερο που μπορείς να κάνεις.
Και επίσης πολύ καλό είναι να χρησιμοποιείς αυτό που προτείνει ο mrpc
Τα (int), is_numeric,is_string κ.λ.π. συνήθως κάνουν πολύ καλή δουλειά.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: ss13 και 0 επισκέπτες