PHP/פלט HTML עם PHP

< PHP

שפת PHP יודעת לפלוט קודי HTML וJavaScript בתוך הפלט הסטנדרטי של PHP.
למעשה, מקרה כזה אינו מסובך בPHP ,וזה יתבצע על ידיי פלט רגיל.
לאחר הפלט, הקוד יתבצע מכיוון שהוא רץ על הדפדפן ולא על השרת .
את הפלט נבצע בצורה כזו:

 echo " show it";//line 1
echo "<br />";//no line
echo "new line";//line 2

הבעיה שנוצרת בגלל הפשטות הזו, היא בעיה של XSS שעלול להווצר בדפים.

שימוש בקלט מהדפדפן

עריכה

מכיוון שפתיחת תסריט ה-PHP נעשית דרך הדפדן ישנה אפשרות לטפל בבקשות GET ו-POST שנקבל מהמשתמש.
הרצת ה-PHP דרך הדפדפן מכניסה את כל המשתנים במתודת GET למערך ‎$_GET ובהתאם את המשתנים בPOST למערך ‎$_POST. אם המשתמש ישלח את הבקשה הבאה:

https://he.wikibooks.org/w/index.php?title=PHP/%D7%A4%D7%9C%D7%98_HTML_%D7%A2%D7%9D_PHP&action=submit

התסריט ידע להשתמש ב-‎$_GET["title"]‎ וב-‎$_GET["action"]‎ כמשתנים שהוא צריך להתייחס אליהם כאשר הוא מדפיס את הפלט שלו (כ-HTML)

דוגמא ראשונה

עריכה
<?php
print "<!DOCTYPE html>
<html>
<head>
<title>Calculator</title>
</head>
<body>
<form method='get'>
First number: <input type='text' size='50' name='num1' /><br />
Second number: <input type='text' size='50' name='num2' /><br />
<input type='submit' value='Sum it!' />
</form>
<hr />
Sum: <input type='text' size='50' name='sum' disabled='disabled' value='".sum($_GET["num1"],$_GET["num2"])."'/><br />
</body>
</html>";

function sum($num1, $num2)
{
return $num1+$num2;
}
?>

הסבר דוגמא ראשונה

עריכה

הקוד ברובו הוא הדפסה של עמוד ה-HTML על ידי פונקצית print ושימוש במחרוזת אחת ארוכה המכילה את כל ה-HTML שאנחנו רוצים לתת לדפדפן. בנוסף הוספנו פונקציה המשמשת אותנו לסיכום המספרים, ואנחנו משתמשים בקלט שקיבלנו מאותו דף עצמו.



הפרק הקודם:
פונקציות
פלט HTML עם PHP הפרק הבא:
פונקציות להכללת דפים