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

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

eXtaZa 07-07-06 20:55

[PHP] בעיה עם GET...
 
יש לי בעיה עם GET, בקוד הבא:
PHP קוד:

<?php
function checkGet(){
    foreach(
$_GET as $key=>$value)
        if(
$key!="id" || $key!="num") return false;
    return 
true;
}
$checkGET=checkGet();
if(
$checkGET)    echo "All good.";
else echo 
"GET is not good!";
?>

עשיתי פונקציה שבודקת את הGET שלי, אם ה$key שווה ל"id" או ל "num", אז שיכתוב לי "All good." אחרת(אם סתם כתבו עוד משהו בGET) שיכתוב לי "GET is not good!".
הבעיה היא שהוא תמיד כותב לי "GET is not good" גם אם הכתובת שלי היא לדוגמא כזאת:
PHP קוד:

http://************/a.php?id=42&num=3 

מישהו יודע מה הבעיה?
תודה.

Ori The Man 07-07-06 21:01

אתה צריך להגדיר לו איזה GET לא סתם $_GET
צריך
PHP קוד:

$_GET["id"]; 


eXtaZa 07-07-06 21:08

ציטוט:

נכתב במקור על ידי Ori The Man
אתה צריך להגדיר לו איזה GET לא סתם $_GET
צריך
PHP קוד:

$_GET["id"]; 


לא הבנתי מה הקשר? אתה מתכוון בforeach ? צריך להכניס שם את השם של המערך, לא איבר מהמערך.

x-ray 07-07-06 21:11

if($key!="id" || $key!="num") return false;

אתה לא אמור לבדוק פה משתנים?

eXtaZa 07-07-06 21:12

ציטוט:

נכתב במקור על ידי x-ray
if($key!="id" || $key!="num") return false;

אתה לא אמור לבדוק פה משתנים?

לא הבנתי אותך...

RS324 07-07-06 21:42

בבקשה פונקציה הרבה יותר יעילה, ופועלת :

PHP קוד:

function checkget()
{
    if (
array_key_exists('id',$_GET) OR array_key_exists('num',$_GET))
    {
        return 
true;
    }
    else 
    {
        return 
false;
    }
    
    


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

eXtaZa 07-07-06 22:00

תודה RS324, עובד...
אבל אם כבר לכתוב כמו שאמרת, למה לכתוב כזה ארוך אם אפשר לצמצם את התוכן של הפונקציה לשתי שורות?
PHP קוד:

function checkGet(){
    if (!
array_key_exists('id',$_GET) || !array_key_exists('num',$_GET)) return false;
    return 
true;


-------עריכה-------

RS324, אתה נתת לי קוד שהוא מחפש בתוך המערך $_GET את המפתח "id" או "num", ואני ניסתי לעשות בקוד שלי שיבדוק את 2 המפתחות הראשונים ואז יבדוק אם הם "id" או "num", מבין?

RS324 07-07-06 22:14

אצלך הוא בדק אם המפתח הראשון שווה ל ID או NUM
ואם לא אז הוא החזיר FALSE
כשזה בעצם היה אמור להיות הפוך,

בכל מקרה הפונקציה שלי היא טיפה יותר יעילה

eXtaZa 08-07-06 14:59

ציטוט:

נכתב במקור על ידי RS324
אצלך הוא בדק אם המפתח הראשון שווה ל ID או NUM
ואם לא אז הוא החזיר FALSE
כשזה בעצם היה אמור להיות הפוך,

בכל מקרה הפונקציה שלי היא טיפה יותר יעילה

למה הפוך? הכוונה שלי היא לבדוק אם המפתח הראשון שווה לid או לnum וגם השני. אבל למה זה לא עובד? הרי זה שווה...

RS324 08-07-06 15:38

כי אתה לא יודע את סדר של ה GET הוא בודק רק את הערך של האיבר הראשון
אם אתה רוצה לבדוק רק את הערך הראשון תעשה
if($_GET[0] == $KEY)
או משהו כזה...

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


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

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