מה עשיתי לא נכון? (קוד PHP מחזיר שגיאה)
-
לא אלאה אתכם בכל הקוד, אבל משום מה, השרת של ימות המשיח מחזיר שגיאה, לא מצליח לראות ו/או להבין למה.
מה לא נכון?
?php // בודקים אם הבקשה היא דרך GET if ($_SERVER['REQUEST_METHOD'] == 'GET') { // בודקים אם כל הפרמטרים קיימים if (isset($_GET['number']) && isset($_GET['pass']) && isset($_GET['mosad']) && isset($_GET['mngrnum'])) { // מקבלים את הפרמטרים מהבקשה $number = $_GET['number']; $pass = $_GET['pass']; $mosad = $_GET['mosad']; $mngrnum = $_GET['mngrnum']; // פרמטר mngrnum // הגדרת ה-URLs להעלאה ולעדכון $upload = "https://www.call2all.co.il/ym/api/UploadTextFile?token={$number}:{$pass}&what=ivr2:"; $update = "https://www.call2all.co.il/ym/api/UpdateExtension?token={$number}:{$pass}&path=ivr2:"; // יצירת רשימת URL להעלאה ולעדכון $list = [ "{$upload}M0000.tts&contents=ברוכים הבאים ל{$mosad}", "{$upload}M1000.tts&contents=לשמיעת הודעות הנהלה הקישו 0, לשמיעת הודעות הכיתות הקישו 1, לרישום לצינתוקים הקישו 2.", "{$update}0&type=playfile&title=הנהלה", "{$upload}0/ext.ini&contents=type=playfile%0atitle=הנהלה%0aenter_id=yes%0aenter_id_type=phone%0arecord_name=no%0asay_name=no", "{$update}1&type=menu&title=כיתות", "{$upload}1/ext.ini&contents=type=menu%0atitle=כיתות%0aenter_id=yes%0aenter_id_type=phone%0arecord_name=no%0asay_name=no", "{$upload}1/M1000.tts&contents=לכיתה א הקישו 1 לכיתה ב 2 וכן הלאה", "{$update}2&type=menu&title=רישום", "{$upload}2/ext.ini&contents=type=menu%0atitle=רישום%0aenter_id=yes%0aenter_id_type=phone%0arecord_name=no%0asay_name=no", "{$upload}2/M1000.tts&contents=להנהלה הקישו 0, לכיתה א הקישו 1, לכיתה ב 2, וכן הלאה", "{$update}3&type=menu&title=הקלטה", "{$upload}3/ext.ini&contents=type=menu%0atitle=הקלטה%0aenter_id=yes%0aenter_id_type=phone%0arecord_name=no%0asay_name=no", "{$upload}3/M1000.tts&contents=להנהלה הקישו 0, לכיתה א הקישו 1, לכיתה ב 2, וכן הלאה", "{$update}4&type=menu&title=ניהול", "{$upload}4/ext.ini&contents=type=menu%0atitle=ניהול%0aenter_id=yes%0aenter_id_type=phone%0arecord_name=no%0asay_name=no%0awhite_list=yes", "{$upload}4/M1000.tts&contents=להנהלה הקישו 0, לכיתה א הקישו 1, לכיתה ב 2, וכן הלאה", "{$upload}4/WhiteList.ini&contents={$mngrnum}" // השתמש בפרמטר mngrnum במקום textBox2 ]; // פונקציה לשליחת בקשות GET ל-API function sendGetRequest($url) { $response = file_get_contents($url); return json_decode($response); } // שליחת הבקשות הרבות אחת אחרי השנייה foreach ($list as $item) { $response = sendGetRequest($item); if ($response->responseStatus != "OK") { echo "הפעולה נכשלה: {$item}\n"; echo "סטטוס: {$response->responseStatus}\n"; echo "הודעה: {$response->message}\n"; exit; } else { echo "הפעולה הצליחה: {$item}\n"; echo "סטטוס: {$response->responseStatus}\n"; } }
-
@עידו מה השגיאה שחוזרת?
-
@אביי-ורבא האמת אני לא יודע, לא הצלחתי עדיין להדפיס את השגיאה המקורית, זה קוד C# שהמרתי לPHP, ועוד לא הצלחתי להבין איך אני מציג הכל.
אנסה תכף לשחק בקוד ולבדוק את זה.הresponse לא מציג כלום
-
@עידו בבקשה לשנות את הנושא "מה עשיתי לא נכון?" לכותרת שתכיל את תוכן הפוסט - בהתאם לתקנון.
-
פוסט זה נמחק! -
@עידו כתב במה עשיתי לא נכון? (קוד PHP מחזיר שגיאה):
@אביי-ורבא האמת אני לא יודע, לא הצלחתי עדיין להדפיס את השגיאה המקורית, זה קוד C# שהמרתי לPHP, ועוד לא הצלחתי להבין איך אני מציג הכל.
אנסה תכף לשחק בקוד ולבדוק את זה.הresponse לא מציג כלום
איפה יש לך שגיאה
בדפדפן או בטלפון? -
@לעזור-לכולם
ניסיתי רק דפדפן, אין לי סמרטפון.
האמת שאני לא חזק בPHP בכלל, נעזרתי בCHATGPT בשביל להמיר את קוד הC# (שעבד חלק) לPHP, וכנראה הוא עשה לי קוד לא תקין.
זה הקוד החשוד:// פונקציה לשליחת בקשות GET ל-API function sendGetRequest($url) { $response = **file_get_contents($url)**; return json_decode($response); }
יתכן והבעיה היא בה?
עד כמה שהצלחתי להבין, הקוד הזה לא ניגש לשרת אלא מנסה לקרוא קובץ, וזה מה שעושה כאן בעיה. האם אני צודק?אני מנסה ללמוד עכשיו להשתמש בCURL (בc# השתמשתי בhttpClient).
-
@עידו
הקוד הזה בסדר גמור
תכתוב כאן את הקישור -
-
@עידו
תמחק את פרטי המערכת -
@לעזור-לכולם
תנסה$response["responseStatus"] != "OK")
-
@לעזור-לכולם שגיאה 500
השתגע פתאום -
@עידו אבל אם תוסיף 1 לschoolivr (schoolivr1.php) תראה את השגיאה
-
@עידו
שינית את הקוד?
בכל מקרה, הקישורים מופעלים בהצלחה (תבודד את זה ותראה)
ההדפסה אחרי לא עובד טוב -
@לעזור-לכולם
הקישורים עצמם עובדים יופי (עבדתי עליהם קשה) הבקשה לשרת לא מייצרת שום קובץ לא לפני השינוי ולא אחרי -
@לעזור-לכולם כתב במה עשיתי לא נכון? (קוד PHP מחזיר שגיאה):
@עידו
שינית את הקוד?
בכל מקרה, הקישורים מופעלים בהצלחה (תבודד את זה ותראה)
ההדפסה אחרי לא עובד טובשיניתי לcurl והבאתי לchatgpt לטפל בקוד שיהיה תקין, וכעת זה עובד חלקית.
עכשיו משום מה נתקע בחלק אחר, לא ברור מה הסיפור שלו
-
<?php // בודקים אם הבקשה היא דרך GET if ($_SERVER['REQUEST_METHOD'] == 'GET') { // בודקים אם כ הפרמטרים קיימים if (isset($_GET['number']) && isset($_GET['pass']) && isset($_GET['mosad']) && isset($_GET['mngrnum'])) { // מקבים את הפרמטרים מהבקשה $number = $_GET['number']; $pass = $_GET['pass']; $mosad = $_GET['mosad']; $mngrnum = $_GET['mngrnum']; // פרמטר mngrnum // הגדרת ה-URLs להעלאה ולעדכו $upload = "https://www.call2all.co.il/ym/api/UploadTextFile?token={$number}:{$pass}&what=ivr2:"; $update = "https://www.call2all.co.il/ym/api/UpdateExtension?token={$number}:{$pass}&path=ivr2:"; // פונקציה לליחת בקשות GET ל-API function sendGetRequest($url) { $ch = curl_init(); // פתיחת מאב CURL curl_setopt($ch, CURLOPT_URL, $url); // גדרת ה-URL curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // החזרת התגובה כמחרוזת $response = curl_exec($ch); // ביצוע הבקשה if (curl_errno($ch)) { // ביקה אם התרחה שגיאה echo "CURL Error: " . curl_error($ch) . "\n"; curl_close($ch); return null; } curl_close($ch); // סגירת המשב return json_decode($response, true); // החזרת JSON כ-array אסוציאטבי } // לולאה נוספת עד 8 for ($i = 1; $i <= 8; $i++) { $url1 = "{$update}1/{$i}&type=playfile&title=השמעת הקלטות"; $response = sendGetRequest($url1); if (!$response || $response['responseStatus'] != "OK") { echo "הפעולה נכשלה:" . "\n"." {$url1}\n"; echo "סטטוס: " . "\n". ($response['responseStatus'] ?? 'לא ידוע') . "\n"; echo "הועה: " . "\n". ($response['message'] ?? 'לא ידועה') . "\n"; exit; } else { echo "הפעולה הצליחה: " . "\n"."{$url1}\n"; echo "סטטוס:" . "\n". "{$response['responseStatus']}\n"; } $url = "{$upload}1/{$i}/ext.ini&contents=" . urlencode(string: "type=playfile%0atitle=השמעת הקלטות%0arecord_name=no%0asay_name=no"); $response = sendGetRequest($url); if (!$response || $response['responseStatus'] != "OK") { echo "הפעולה נכשלה:" . "\n"." {$url}\n"; echo "סטטוס: " . "\n". ($response['responseStatus'] ?? 'לא ידוע') . "\n"; echo "הועה: " . "\n". ($response['message'] ?? 'לא ידועה') . "\n"; exit; } else { echo "הפעולה הצליחה: {$url}\n"; echo "סטטוס: {$response['responseStatus']}\n"; } } } else { // אם הבקשה לא הייתה דרך GET echo "הבקשה לא נעשתה דרך GET\n"; } ?>
זה הקוד החדש
הלולאה משום מה מחזירה שגיאה, הדפדפן מתעקש לא להצליח להציג מה הבעיה. -
הסתדרתי
תודה לכולם