אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » פיתוח אינטרנט » פתרונות ומאמרים על פיתוח אינטרנט » שימוש ב-curl לשליחת פרמטרים

שימוש ב-curl לשליחת פרמטרים

רן בר-זיק יולי 14, 2011 8:12 am אין תגובות

כך תשתמשו ב-curl ב-PHP על מנת לשלוח פרמטרים ולקבל מידע מאתרים שונים.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

curl היא פקודה שימושית בלינוקס, שניתן להשתמש בה גם ב-PHP ובאמצעותה ניתן לטעון דף אחד. למתי זה שימושי? זה שימושי מאד כאשר אנו רוצים בסקריפט ה-PHP שלנו לטעון דף משרת אחר ולשלוח אליו מידע. למשל כאשר אנו מבצעים סליקה אלקטרונית, התחברות ל-webservice כלשהו (שלא עובד עם SOAP) או כל טופס אחר.

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

שם הדף והפרמטרים

שם הדף הוא פשוט, מדובר בכתובת דף אינטרנט כלשהי – הכתובת אליה אנו שולחים את הפרטים. זה יכול להיות דף אינטרנט באתר שלנו או באתר אחר.

הפרמטרים הם מעט יותר מורכבים. מדובר במחרוזת טקסט המכילה את שם הפרמטר והערך שלו כאשר מה שמפריד ביניהם הוא הסימן &. אנחנו יכולים לשלוח את הפרמטרים כ-GET ואז אנו נשלח אותם כחלק מה-URL או כ-POST. בדוגמא הזו אני שולח אותם בפורמט POST.

אז הנה שני משתנים – אחד מכיל את כתובת הדף והשני מכיל את הפרמטרים:


$host = 'https://www.example.com/example.cgi'

$params = 'param1=value1&param2=value2&param3';

הכנת קריאת ה-CURL

עכשיו מה שיש לנו לעשות זה ליצור קריאת curl באופן הבא:


$curl_connection = curl_init();
curl_setopt($curl_connection, CURLOPT_URL, $host);
curl_setopt($curl_connection, CURLOPT_POST, 1);
curl_setopt($curl_connection, CURLOPT_FAILONERROR, true);
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $poststring);
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, 0);

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

שליחת הקריאה

אחרי שהכנו את הקריאה יש לשלוח אותה ואת זה עושים עם הקוד הבא:


$result = curl_exec($curl_connection);

מה שהקוד עושה זה לשלוח את הקריאה ולקבל את התוצאה אחר כך (מה שזו לא תהיה) באמצעות משתנה result.

טיפול בטעויות

לא תמיד שליחת מידע באמצעות curl עובדת. לעתים אנו נתקלים בתקלת 404 (דף חסר), לפעמים יש תקלה אחרת שנובעת משיבושים בשרת שלנו או בשרת השני (בדרך כלל בשרת שאליו נשלחת הבקשה). על מנת לדעת לדבג את העניין אנו נצרף לקוד גם קוד טיפול בטעויות שידפיס את השגיאות ובכך נוכל לטפל בהן. הקוד הוא:


// on error - exit with error message
$error = curl_error($curl_connection);
if(!empty($error)) {
	die($error);
}

סגירת הבקשה

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


curl_close($curl_connection);

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


<?php

$host = 'https://www.example.com/example.cgi'

$params = 'param1=value1&param2=value2&param3';

$curl_connection = curl_init();
curl_setopt($curl_connection, CURLOPT_URL, $host);
curl_setopt($curl_connection, CURLOPT_POST, 1);
curl_setopt($curl_connection, CURLOPT_FAILONERROR, true);
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, 0);

// actual curl execution perfom
$result = curl_exec($curl_connection);

// on error - exit with error message
$error = curl_error($curl_connection);
if(!empty($error)) {
	die($error);
}
curl_close($curl_connection);

מה שחשוב לזכור הוא שלא כל שרת מאפשר קריאת curl ויש לוודא עם ה-sysadmin שיפתח את הקריאה הזו. אין סיכון בטחוני ב-curl כל עוד משתמשים בו היטב ומפלטרים את התשובה שמקבלים.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
סקריפטים

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד