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

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

-VladK- 13-11-06 08:13

[PHP] כיצד ניתן לבדוק מהיכן טופס נישלח?
 
היי.

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

לאדע למה אבל זה קצת מרגיז אותי...

אז...כיצד אני יכול לבדוק שהטופס שלי נשלח משרת שלי ולא משרת אחר?

עריכה:

אה ועוד משהו האם אני יכול לתת לקישור שם שימש אותי בPOST?

כלומר נגיד יש לי INPUT...אני יכול להגדיר לו שם ואז לבדוק אם הוא קיים וזה... דרך:
PHP קוד:

if(isset($_POST['inputname'])) 

האם אני יכול לתת לקישור גם שם כדי שאני יוכל לבצע את בדיקה הזאת?

עריכה 2:
האם אני יכול לבדוק שכל האותיות בטופס מסויים הם באנגלית?
אם כן, איך?

CoCa 13-11-06 08:41

בקשר לאותי באנגלית אפשר, אבל יש לי דרך מסורבלת טיפה לבדוק את זה... אז זה הולך ככה:
PHP קוד:

$string=$_POST['name'];
$i=0;
$error=="";
while ((
$string[i]!="")&&($error==""))
{
if (((
$string[i]>'a')&&($string[i]<'z'))||(($string[i]>'A')&&($string[i]<'Z')))
$i++;
else
$error="כל האותיות חייבות להיות באנגלית";


יש לי הרגשה שיש שם טעות קטנה אבל זה אלגוריתם מסורבל שאמור לעבוד(אם יש פונקציה שעושה את זה לבד אני אשמח לשמוע).

sUP 13-11-06 12:22

בנוגע לבדוק אם זה שלח מהשרת אתה יכול להציב קוד רנדומלי ולבדוק אם הוא נכון בעזרת סשן

העריכה הראשונה שלך לא הבנתי (עם ה POST)

בנוגע לאותיות באנגלית
PHP קוד:

preg_match('/^[A-Z]*$/'$text

תקנו אותי אם משו פה לא נכון חח

-VladK- 13-11-06 13:45

ציטוט:

נכתב במקור על ידי sUP
בנוגע לבדוק אם זה שלח מהשרת אתה יכול להציב קוד רנדומלי ולבדוק אם הוא נכון בעזרת סשן

העריכה הראשונה שלך לא הבנתי (עם ה POST)

בנוגע לאותיות באנגלית
PHP קוד:

preg_match('/^[A-Z]*$/'$text

תקנו אותי אם משו פה לא נכון חח

preg_match בודק לפי ביטוי רגולרי? בקשר לPOST...אני ישנה את השאלה...האם קישור, יכול לתפקד כINPUT מסוג SUBMIT? עצם השליחה שלו אני יכול לבצע בעזרת JS...אבל אני רוצה להגדיר לקישור שם כמו שאני מגדיר שם לINPUT...במילים אחרות... האם NAME יכול לפעול בתוך קישור? או שמה יש משהו אחר שיכול להגדיר לקישור שם? (אני לא מדבר על ID)

sUP 13-11-06 13:55

לא חושב שאפשר.. אבל למה להגדיר לקישור name ?

-VladK- 13-11-06 14:15

ציטוט:

נכתב במקור על ידי sUP
לא חושב שאפשר.. אבל למה להגדיר לקישור name ?

בגלל שיש לי קישור שמשמש אותי בשליחה במקום INPUT...ואני רוצה לעשות בדיקה אם אכן נשלח דרך אותו קישור...בקיצור...תתעלמו מהשאלה הזאת...אני ישמח אם תענו לי על השאלה העיקרית....כי לא הכי הבנתי מה אני עושה...

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

ובשליחה אני פשוט בודק אם הסשן שלי קיים?

sUP 13-11-06 16:08

ממ כן.. אבל תקע לסשן שם קשה..

tnadav 13-11-06 16:33

ציטוט:

נכתב במקור על ידי sUP
בנוגע לבדוק אם זה שלח מהשרת אתה יכול להציב קוד רנדומלי ולבדוק אם הוא נכון בעזרת סשן

העריכה הראשונה שלך לא הבנתי (עם ה POST)

בנוגע לאותיות באנגלית
PHP קוד:

preg_match('/^[A-Z]*$/'$text

תקנו אותי אם משו פה לא נכון חח

תתקן ל- :
PHP קוד:

preg_match('/^[A-Z]*$/i'$text


4ior 13-11-06 16:37

או שאתה פשוט בודק אם הרפרר הוא האתר שלך;)
$_SERVER['HTTP_REFERER'];

RS324 13-11-06 17:17

בכדי לבדוק אם זה לא מהשרת שלך אתה יכול לבדוק לפי ה REFER...
החלטתי לעשות לך חיים מאד קלים ולתת לך קוד שעובד ב 100 %

בבקשה :

PHP קוד:

if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST')
{
    if (
$_SERVER['HTTP_HOST'] OR $_ENV['HTTP_HOST'])
    {
        
$http_host = ($_SERVER['HTTP_HOST'] ? $_SERVER['HTTP_HOST'] : $_ENV['HTTP_HOST']);
    }
    else if (
$_SERVER['SERVER_NAME'] OR $_ENV['SERVER_NAME'])
    {
        
$http_host = ($_SERVER['SERVER_NAME'] ? $_SERVER['SERVER_NAME'] : $_ENV['SERVER_NAME']);
    }
    if (
$http_host AND $_SERVER['HTTP_REFERER'])
    {
        
$referrer_parts parse_url($_SERVER['HTTP_REFERER']);
        
$http_host preg_replace('#^www\.#i'''$http_host);
        
$http_port intval($referrer_parts['port']);
        
$refhost $referrer_parts['host'] . (!empty($http_port) ? ":$http_port" '');

        if (!
preg_match('#' preg_quote($http_host'#') . '$#siU'$refhost))
        {
            die(
'We Dont take POST requests (only from localhost) From other hosts.');
        }
    }




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

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