הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   משהו מוזר עם האופרטור OR (https://hosts.co.il/forums/showthread.php?t=84125)

RAS 01-08-10 23:39

משהו מוזר עם האופרטור OR
 
עשיתי דבר כזה:

PHP קוד:

if (strip_tags($_POST['name']) != htmlspecialchars($_POST['name']) OR strip_tags($_POST['comment']) != htmlspecialchars($_POST['comment'])) {
                        echo 
"אין להכניס תגי HTML.<br />";
                    } 

מה שזה עושה זה בודק אם קיימים תגי HTML בשני POSTים, comment וname.

מה שקורה בפועל זה שאם אני מכניס תג HTML ב POST אחד בלבד (כלומר, מתקיים תנאי אחד במשפט ה-IF) זה עובד טוב. אבל אם אני מכניס תגי HTML בשני POSTים (כלומר, מתקיימים שני התנאים במשפט ה-IF) המשפט IF בעצם לא מתקיים, למה?

אני יודע ש XOR אומר שאם שני התנאים מוערכים כ-TRUE התנאי לא יתקיים, אבל ב OR זה לא ככה.

לחסוך ממכם:
ניסיתי במקום OR לכתוב ||, כמו כן אני מעוניין שזה יהיה בתנאי אחד ולא בשני תנאים.

תודה רבה מראש!

SarafC 02-08-10 01:05

אני חושב שלא הבנת את המשמעות של הפונקציות שאתה משתמש בהן..

strip_tags מנקה את המחרוזת מתגיות HTML, כמו <a>, <b>, <p>, וכו'.

htmlspecialchars הופכת סימנים מסויימים לקידוד HTML. הסימנים שמומרים הם: &, ", ', <, >.

לפי מה שאני מבין, אתה לא יכול לקבל מחרוזות שוות אם אתה משתמש באחד מהסימנים של htmlspecialchars.

כלומר, את כתבת:

PHP קוד:

<b>Hello!! - "To You"</b

strip_tags ייתן לך:

PHP קוד:

Hello!! - "To You" 

ולעומת זאת, htmlspecialchars ייתן לך:

PHP קוד:

&lt;b&gt;Hello!! - &quot;To You&quot;&lt;/b&gt

זה ממש לא אותו דבר, משמע הבדיקה שיצרת לא נכונה בכלל..

RAS 02-08-10 09:26

זה בדיוק מה שאני רוצה :)

תחשוב, אם הוא הכניס תג HTML זה יביא לי בשניהם מחרוזות שונות - כלומר לא שוות - ואז זה אומר שהוא הכניס תגי HTML.

RAS 02-08-10 12:21

אה הבנתי מה הבעיה, הטעות הייתה אצלי, שחכתי להכניס את זה למערך $errors אצלי שמדווח על כל השגיאות. |מסמיק|

טוב נו, זה יעזור לכאלה שירצו לחסום תגי HTML..

מצטער על הטריחה.

~The_Sultan~ 02-08-10 12:22

אבל אם בנאדם כתב גרשיים?

RAS 02-08-10 12:26

האמתי שאני רוצה שיהיו בתגובות רק אותיות, בלי סמני פיסוק למעט הכרחיים כמו פסיק ונקודה. לך תדע מה יכולים להשתיל לך..

Daniel 04-08-10 10:45

אתה מוזמן להסתכל אפילו פה בפורום - אתה יכול להכניס מה שתרצה - <>"'# - ואין שום בעייה. שימוש פשוט ב-htmlspecialchars פותר את הבעייה.

iOrel 05-08-10 18:11

אני אתחיל בזה שאין כזה דבר בתנאי אופורט OR יש כזה: || (ו/או).
ואם אתה רוצה לבדוק בקלות:
PHP קוד:

<?php
if(strip_tags("<strong>Hey</strong>") || htmlentities("<strong>Hey</strong>"))
{
echo 
"We Are sorry, but you cannot insert HTML tags";
}
?>


RS324 05-08-10 18:12

ציטוט:

נכתב במקור על ידי iOrel (פרסם 774233)
אני אתחיל בזה שאין כזה דבר בתנאי אופורט OR יש כזה: || (ו/או).
ואם אתה רוצה לבדוק בקלות:
PHP קוד:

<?php
if(strip_tags("<strong>Hey</strong>") || htmlentities("<strong>Hey</strong>"))
{
echo 
"We Are sorry, but you cannot insert HTML tags";
}
?>


אתה טועה ובגדול יש OR ויש AND ויש XOR כמובן שאפשר גם להשתמש ב || וב && אבל עדיין זה קיים

iOrel 05-08-10 18:17

ציטוט:

נכתב במקור על ידי RS324 (פרסם 774234)
אתה טועה ובגדול יש OR ויש AND ויש XOR כמובן שאפשר גם להשתמש ב || וב && אבל עדיין זה קיים

לפי מה שידוע לי, זה כבר לא עובד, כי על השרת שלי זה הריץ שגיאה |Rolleyes|


כל הזמנים הם GMT +2. הזמן כעת הוא 21:52.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ