Open eClass Documentation
You are here: start » el » developers » library

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
el:developers:library [2022/10/26 13:49] – created adminel:developers:library [2022/10/26 14:08] (current) – admin
Line 1: Line 1:
 ===== Χρήσιμες συναρτήσεις βιβλιοθήκης ===== ===== Χρήσιμες συναρτήσεις βιβλιοθήκης =====
  
-Το αρχείο @main_lib.php@ γίνεται αυτόματα include.+Το αρχείο //main_lib.php// γίνεται αυτόματα include.
  
 === Είσοδος τιμών από το χρήστη (GET, POST) === === Είσοδος τιμών από το χρήστη (GET, POST) ===
  
-<code class="php">$user_id = intval($_GET['user_id']);</code>+<code>$user_id = intval($_GET['user_id']);</code>
  
 Για την είσοδο πολλαπλών τιμών που έρχονται με POST, έχουμε την παρακάτω κλήση: Για την είσοδο πολλαπλών τιμών που έρχονται με POST, έχουμε την παρακάτω κλήση:
Line 12: Line 12:
 Για παράδειγμα:  Θέλουμε να ορίσουμε τις global μεταβλητές string $name και $description, οι οποίες περιέχουν τις τιμές των αντίστοιχων τιμών του POST με αυτόματο escaping/quoting, και τις ακέραιες μεταβλητές $student_id και $group_id. Η τιμή description είναι προαιρετική. Για παράδειγμα:  Θέλουμε να ορίσουμε τις global μεταβλητές string $name και $description, οι οποίες περιέχουν τις τιμές των αντίστοιχων τιμών του POST με αυτόματο escaping/quoting, και τις ακέραιες μεταβλητές $student_id και $group_id. Η τιμή description είναι προαιρετική.
  
-<code class="php">$form_ok = register_posted_variables(+<code>$form_ok = register_posted_variables(
                 array('name' => true, 'description' => false),                 array('name' => true, 'description' => false),
                 'all', 'quote') &&                 'all', 'quote') &&
Line 20: Line 20:
  
 Η $form_ok θα είναι αληθής αν οι παράμετροι name, student_id και group_id έχουν λάβει μη μηδενικές/κενές τιμές στο POST. Η $form_ok θα είναι αληθής αν οι παράμετροι name, student_id και group_id έχουν λάβει μη μηδενικές/κενές τιμές στο POST.
 +
 +----
  
 === Rich text (HTML) – αποφυγή XSS === === Rich text (HTML) – αποφυγή XSS ===
Line 25: Line 27:
 Κατά την είσοδο κειμένου rich text που περιέχει formatting (πχ. από σελίδες που χρησιμοποιούν το TinyMCE), το κείμενο πρέπει να περνάει από purify() για να καθαριστεί από σφάλματα και κώδικα JavaScript που επιτρέπει επιθέσεις XSS (Cross Site Scripting). Κατά την είσοδο κειμένου rich text που περιέχει formatting (πχ. από σελίδες που χρησιμοποιούν το TinyMCE), το κείμενο πρέπει να περνάει από purify() για να καθαριστεί από σφάλματα και κώδικα JavaScript που επιτρέπει επιθέσεις XSS (Cross Site Scripting).
  
-Παράδειγμα: έστω μια φόρμα από την οποία έρχονται με POST οι τιμές title (plain tex) και description (rich text).+Παράδειγμα: έστω μια φόρμα από την οποία έρχονται με POST οι τιμές title (plain text) και description (rich text).
  
-<code class="php">$title = $_POST['title'];+<code>$title = $_POST['title'];
 $descr = purify($_POST['description']); $descr = purify($_POST['description']);
-db_query("INSERT INTO posts +</code>
-                 SET title = " . quote($title) . ", +
-                     description = " . quote($descr));</code>+
  
 === Εμφάνιση τιμών – απλό κείμενο === === Εμφάνιση τιμών – απλό κείμενο ===
  
-Το απλό κείμενο (plain text) κατά την εμφάνιση στο χρήστη πρέπει να γίνεται escape μέσω της κλήσης q() (ουσιαστικά πρόκειται για alias της htmlspecialchars() με πιο σύντομο όνομα).+Το απλό κείμενο (plain text), κατά την εμφάνιση στο χρήστη, πρέπει να γίνεται escape μέσω της κλήσης q() (ουσιαστικά πρόκειται για alias της htmlspecialchars() με πιο σύντομο όνομα).
  
-<code class="php">$tool_content .= "<t1>" . q($title) . "</t1>";</code>+<code>$tool_content .= "<h3>" . q($title) . "</h3>";</code>
  
-=== Εμφάνιση κειμένου με μορφοποίηση (Rich Text – HTML) ===+----
  
-Όπως αναφέρθηκε πιο πανω, το rich text κατά την εισαγωγή στη βάση πρέπει να έχει περάσει από την purify(). Στην περίπτωση αυτή, όταν το παίρνουμε από τη βάση και το εμφανίζουμε, αρκεί να το περάσουμε από την @standard_text_escape()@ η οποία αυτή τη στιγμή χειρίζεται τα εξής:+=== Εμφάνιση κειμένου με μορφοποίηση (Rich Text–HTML) ===
  
-* Μαθηματικοί τύποι (πχ: @[m]y = y^2[/m]@)+Όπως αναφέρθηκε πιο πανω, το rich text κατά την εισαγωγή στη βάση πρέπει να έχει περάσει από την purify(). Στην περίπτωση αυτή, όταν το παίρνουμε από τη βάση και το εμφανίζουμε, αρκεί να το περάσουμε από την standard_text_escape() η οποία αυτή τη στιγμή χειρίζεται τα εξής: 
 + 
 +* Μαθηματικοί τύποι
 * Λέξεις γλωσσαρίου (που επεκτείνονται όπου εμφανίζονται σε συνδέσμους με τον ορισμό τους) * Λέξεις γλωσσαρίου (που επεκτείνονται όπου εμφανίζονται σε συνδέσμους με τον ορισμό τους)
  
-<code class="php">$tool_content .= '<div>' . standard_text_escape($descr) . '</div>';</code>+<code>$tool_content .= '<div>' . standard_text_escape($descr) . '</div>';</code>
  
 Στην περίπτωση που εμφανίζουμε μια τιμή που δεν έχει περάσει από purify() στην είσοδο, για παράδειγμα αν ξαναδείξουμε στο χρήστη κείμενο που έδωσε, δεν παραλείπουμε το purify(): Στην περίπτωση που εμφανίζουμε μια τιμή που δεν έχει περάσει από purify() στην είσοδο, για παράδειγμα αν ξαναδείξουμε στο χρήστη κείμενο που έδωσε, δεν παραλείπουμε το purify():
  
-<code class="php">$tool_content .= standard_text_escape(purify($_POST['descr']));</code>+<code>$tool_content .= standard_text_escape(purify($_POST['descr']));</code> 
 + 
 +----
  
 === Εμφάνιση τιμών για χρήση από JavaScript === === Εμφάνιση τιμών για χρήση από JavaScript ===
  
-String που χρησιμοποιούνται σε κώδικα JavaScript πρέπει να γίνονται escape με τη συνάρτηση @js_escape()@. Για παράδειγμα:+String που χρησιμοποιούνται σε κώδικα JavaScript πρέπει να γίνονται escape με τη συνάρτηση js_escape(). Για παράδειγμα:
  
-<code class="php">$head_content .= "+<code>$head_content .= "
 <script type="text/javascript"> <script type="text/javascript">
 var langConfirmDelete = '" . js_escape($langConfirmDelete)  . "'; var langConfirmDelete = '" . js_escape($langConfirmDelete)  . "';
 </script> </script>
-";</code>+"; 
 +</code>
  
 +
 +----
  
 === Πεδία για φόρμες === === Πεδία για φόρμες ===
  
-* <code class="php">selection($entries, $name, $default = '', $extra = '')</code> +<code>selection($entries, $name, $default = '', $extra = '')</code> 
-* <code class="php">multiselection($entries, $name, ...)</code> +<code>multiselection($entries, $name, ...)</code> 
-   όπου: <code class="php">$entries = array('id1' => 'value1',  'id2' => 'value2' ...)</code> +   όπου:  
-* <code class="php">text_area($name, $rows, $cols, $text, $extra = '')</code> +<code>$entries = array('id1' => 'value1',  'id2' => 'value2' ...)</code> 
-* <code class="php">rich_text_editor($name, $rows, $cols, $text, $extra = '')</code>+<code>text_area($name, $rows, $cols, $text, $extra = '')</code> 
 +<code>rich_text_editor($name, $rows, $cols, $text, $extra = '')</code> 
 + 
 +Η παράμετρος $name περιέχει το όνομα του πεδίου στη φόρμα. Η παράμετρος $extra περιέχει πρόσθετες ιδιότητες (πχ. κλάση, id, JavaScript) που θα προστεθούν στο HTML element του πεδίου. 
 + 
 +---- 
 + 
 +=== Eμφάνιση εικονιδίων από font awesome === 
 + 
 +<code>icon($name, $title = null, $link = null, $link_attrs = null, $with_title = false, $sr_only = false)</code> 
 + 
 +Παράδειγματα:  
 + 
 +Χρησιμοποιούμε την κλήση 
  
-Η παράμετρος $name περιέχει το όνομα του πεδίου στη φόρμα. Η παράμετρος @$extra@ περιέχει πρόσθετες ιδιότητες (πχ. κλάση, id, JavaScript) που θα προστεθούν στο HTML element του πεδίου.+<code>icon($name, $title = null, $link = null, $link_attrs = '', $with_title = false, $sr_only = false)</code>
  
-=== Eμφάνιση εικονιδίων από template/<theme>/img/ ===+Παραδείγματα:
  
-<code class="php">icon($name, $title = null, $link = null, $attrs = null, $format = 'png', $link_attrs = '')</code>+<code>icon('fa-gears')</code> 
 +<code>icon('fa-smile-o', $langQuestionVeryEasy)</code> 
 +<code>icon('fa-edit', $langModify, "group_description.php?course=$course_code&amp;group_id=$group_id"</code>
  
-Παράδειγμα: εμφάνιση του εικονιδίου @cunregister.png@ το οποίο έχει title/alt text το μήνυμα @ $langUnregCourse@, τον σύνδεσμο της τρίτης παραμέτρου, και την πρόσθετη ιδιότητα JavaScript @onClick@ της τετάρτης παραμέτρου: +----
-<pre><code class="php">$tool_content = icon( +
-    'cunregister', +
-    $langUnregCourse, +
-    "unreg.php?course=$course_code&amp;unregister=$id", +
-    "onClick=\"return confirmation('" . js_escape($langDeleteUser) . "');\"");</code></pre>+
  
 === Εμφάνιση χρήστη με link στο προφίλ === === Εμφάνιση χρήστη με link στο προφίλ ===
  
-Γίνεται με την κλήση display_user($user_id).+Χρησιμοποιούμε την κλήση <code>display_user($user_id)</code>
  
-Παράδειγμα: +----
-<code class="php">$query = db_query("SELECT * FROM user WHERE id = $user_id"); +
-$user_info = mysql_fetch_assoc($query); +
-display_user($user_info);</code>+
  
 === Στοιχεία χρήστη === === Στοιχεία χρήστη ===
  
-* uid_to_username($uid) +<code>uid_to_username($uid)</code> 
-* uid_to_name($uid) +<code>uid_to_name($uid)</code> 
-* uid_to_surname($uid) +<code>uid_to_surname($uid)</code> 
-* uid_to_email($uid) +<code>uid_to_email($uid)</code> 
-* uid_to_am($uid)+<code>uid_to_am($uid)</code>
  
Open eClass Documentation

Table of Contents