Χρήσιμες συναρτήσεις βιβλιοθήκης

Το αρχείο main_lib.php γίνεται αυτόματα include.

Είσοδος τιμών από το χρήστη (GET, POST)

$user_id = intval($_GET['user_id']);

Για την είσοδο πολλαπλών τιμών που έρχονται με POST, έχουμε την παρακάτω κλήση:

register_posted_variables($var_array, $what = 'all', $callback = null);

Για παράδειγμα: Θέλουμε να ορίσουμε τις global μεταβλητές string $name και $description, οι οποίες περιέχουν τις τιμές των αντίστοιχων τιμών του POST με αυτόματο escaping/quoting, και τις ακέραιες μεταβλητές $student_id και $group_id. Η τιμή description είναι προαιρετική.

$form_ok = register_posted_variables(
                array('name' => true, 'description' => false),
                'all', 'quote') &&
           register_posted_variables(
                array('student_id' => true, 'group_id' => true),
                'all', 'intval');

Η $form_ok θα είναι αληθής αν οι παράμετροι name, student_id και group_id έχουν λάβει μη μηδενικές/κενές τιμές στο POST.


Rich text (HTML) – αποφυγή XSS

Κατά την είσοδο κειμένου rich text που περιέχει formatting (πχ. από σελίδες που χρησιμοποιούν το TinyMCE), το κείμενο πρέπει να περνάει από purify() για να καθαριστεί από σφάλματα και κώδικα JavaScript που επιτρέπει επιθέσεις XSS (Cross Site Scripting).

Παράδειγμα: έστω μια φόρμα από την οποία έρχονται με POST οι τιμές title (plain text) και description (rich text).

$title = $_POST['title'];
$descr = purify($_POST['description']);

Εμφάνιση τιμών – απλό κείμενο

Το απλό κείμενο (plain text), κατά την εμφάνιση στο χρήστη, πρέπει να γίνεται escape μέσω της κλήσης q() (ουσιαστικά πρόκειται για alias της htmlspecialchars() με πιο σύντομο όνομα).

$tool_content .= "<h3>" . q($title) . "</h3>";

Εμφάνιση κειμένου με μορφοποίηση (Rich Text–HTML)

Όπως αναφέρθηκε πιο πανω, το rich text κατά την εισαγωγή στη βάση πρέπει να έχει περάσει από την purify(). Στην περίπτωση αυτή, όταν το παίρνουμε από τη βάση και το εμφανίζουμε, αρκεί να το περάσουμε από την standard_text_escape() η οποία αυτή τη στιγμή χειρίζεται τα εξής:

* Μαθηματικοί τύποι * Λέξεις γλωσσαρίου (που επεκτείνονται όπου εμφανίζονται σε συνδέσμους με τον ορισμό τους)

$tool_content .= '<div>' . standard_text_escape($descr) . '</div>';

Στην περίπτωση που εμφανίζουμε μια τιμή που δεν έχει περάσει από purify() στην είσοδο, για παράδειγμα αν ξαναδείξουμε στο χρήστη κείμενο που έδωσε, δεν παραλείπουμε το purify():

$tool_content .= standard_text_escape(purify($_POST['descr']));

Εμφάνιση τιμών για χρήση από JavaScript

String που χρησιμοποιούνται σε κώδικα JavaScript πρέπει να γίνονται escape με τη συνάρτηση js_escape(). Για παράδειγμα:

$head_content .= "
<script type="text/javascript">
var langConfirmDelete = '" . js_escape($langConfirmDelete)  . "';
</script>
";

Πεδία για φόρμες

selection($entries, $name, $default = '', $extra = '')
multiselection($entries, $name, ...)
 όπου: 
$entries = array('id1' => 'value1',  'id2' => 'value2' ...)
text_area($name, $rows, $cols, $text, $extra = '')
rich_text_editor($name, $rows, $cols, $text, $extra = '')

Η παράμετρος $name περιέχει το όνομα του πεδίου στη φόρμα. Η παράμετρος $extra περιέχει πρόσθετες ιδιότητες (πχ. κλάση, id, JavaScript) που θα προστεθούν στο HTML element του πεδίου.


Eμφάνιση εικονιδίων από font awesome

icon($name, $title = null, $link = null, $link_attrs = null, $with_title = false, $sr_only = false)

Παράδειγματα:

Χρησιμοποιούμε την κλήση

icon($name, $title = null, $link = null, $link_attrs = '', $with_title = false, $sr_only = false)

Παραδείγματα:

icon('fa-gears')
icon('fa-smile-o', $langQuestionVeryEasy)
icon('fa-edit', $langModify, "group_description.php?course=$course_code&amp;group_id=$group_id"

Χρησιμοποιούμε την κλήση

display_user($user_id)

Στοιχεία χρήστη

uid_to_username($uid)
uid_to_name($uid)
uid_to_surname($uid)
uid_to_email($uid)
uid_to_am($uid)