פקודה מהירה להעתקת כל המספרים מרשי"ת X לרשי"ת Y
-
@זאביק כתב בפקודה מהירה להעתקת כל המספרים מרשי"ת X לרשי"ת Y:
ב. מעניין למה אצלי הטקסט בשאילתה משובש (מצו"ב)
כנראה שלא שמרת את הקובץ בפורמט UTF-8
-
@זאביק אני מציע לך לקחת את הקוד ולשאול את gpt מה שאתה רוצה, אני כרגע לא יכול אפילו להסתכל על זה.
-
-
@יב מה זה יועיל לי?
לכאורה הכי טוב עבורי הוא, לטפל בקוד ש@עידו היקר הביא, ולהתאים אותו לקבלת הפרמטרים באמצעות לינק. -
@זאביק כתב בפקודה מהירה להעתקת כל המספרים מרשי"ת X לרשי"ת Y:
164XXXXXXXXXXXXXXXX.tfuza.php?token=079999999:123456&sourceTemplateId=250005&targetTemplateId=250006
זה מה שיועיל לך. במקום לכתוב ידנית את הנתיב, תגדיר משתנה.
-
@יב לא בדיוק הבנתי,
אני בין כך מגדיר ידנית פעם אחת בלבד, ושומר לי את כל הלינקים המדוייקים הנצרכים לי במחשב, ואח"כ אני לא צריך להגדיר שוב פעם כלום. -
@CUBASE כתב בפקודה מהירה להעתקת כל המספרים מרשי"ת X לרשי"ת Y:
ב. מעניין למה אצלי הטקסט בשאילתה משובש (מצו"ב)
כנראה שלא שמרת את הקובץ בפורמט UTF-8
צודק! תודה רבה!!!
-
לתועלת הרבים אני מעלה פה בס"ד קוד משודרג!!
הקוד כמובן מתבסס על הקוד הבסיסי ש @עידו היקר העלה פה!ויש כאן 4 שידרוגים חשובים
-
בשאילתה יש אפשרות לקבוע איזו פעולה לעשות (להוסיף / למחוק / לחסום /להחליף).
-
בנוסף יש אפשרות בפעולה אחת לבחור כמה רשימות "מקור" (ללא הגבלה) וכן אפשר לבחור כמה רשימות "יעד" (ללא הגבלה), - ולבצע את העתקת כל המספרים שנשלפו מכל המקורות שנבחרו, לכל היעדים שנבחרו,
(שימו לב: אין אפשרות לפצל ביניהם, אלא הפעולה היא מכל המקורות לכל היעדים). -
ישנה אפשרות להכניס את הפרמטרים לתוך הגדרות השלוחה, ואז ניתן לבצע את הכל דרך הטלפון...
להלן מה שצריך להכניס לשלוחה
type=api api_link=http://164XXXXXXXXXXXXXXXXtfuza.php טוקן api_add_0=token=0999999999:123456 איזו פעולה לבצע api_add_1=action=add 4 אפשרויות: להוסיף add / למחוק remove /לחסום block / להחליף את המספרים הישנים בחדשים replace רשימת מקור api_add_2=source1=255510 אפשר להוסיף מקורות ע"י source2 וכן הלאה רשימת יעד api_add_3=target1=255739 אפשר להוסיף יעדים ע"י target2 וכן הלאה
- מי שמשתמש הרבה פעמים בהעברות בין רשי"ת קבועות, - ואין לו זמן וכח למלא כל פעם את השאילתה מחדש, יכול ליצור לעצמו באופן חד פעמי לינק, שיבצע את הכל בלחיצה אחת,
הלינק צריך להיות כך:
.http://164XXXXXXXXXXXXXXXXtfuza.php?token=0799999999:123456&action=add&source1=11122&target1=22233
מצו"ב תמונה של השאילתה המעודכנת:
וכמובן צריך שרת להכניס שם את הקוד, ולהלן הקוד המשודרג:
<?php // משתנים עיקריים $success = ''; $error = ''; $resultMsg = ''; $removedCount = 0; $blockedCount = 0; $transferredCount = 0; // קבלת פרמטרים מהמשתמש (GET/POST) $request = array_merge($_GET, $_POST); $action = $request['action'] ?? ''; $token = $request['token'] ?? ''; // קבלת מקורות ויעדים כמערכים $sources = []; $targets = []; // תמיכה בפרמטרים בודדים או מערכים foreach ($request as $key => $value) { if (preg_match('/^source(\d+)$/', $key) && trim($value) !== '') { $sources[] = trim($value); } } if (isset($request['sources']) && is_array($request['sources'])) { foreach ($request['sources'] as $src) { if (trim($src) !== '') $sources[] = trim($src); } } foreach ($request as $key => $value) { if (preg_match('/^target(\d+)$/', $key) && trim($value) !== '') { $targets[] = trim($value); } } if (isset($request['targets']) && is_array($request['targets'])) { foreach ($request['targets'] as $tgt) { if (trim($tgt) !== '') $targets[] = trim($tgt); } } // ביצוע פעולה רק אם כל הנתונים קיימים if ($_SERVER['REQUEST_METHOD'] === 'POST' || !empty($_GET)) { if ($token && count($sources) > 0 && count($targets) > 0 && in_array($action, ['add','remove','block','replace'])) { // פונקציית עזר לשליחת בקשה ל-API function apiRequest($url, $data) { $curl = curl_init($url); curl_setopt_array($curl, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($data), ]); $response = curl_exec($curl); curl_close($curl); return json_decode($response, true); } // שליפת כל המספרים מכל המקורות (ללא כפילויות) $allNumbers = []; foreach ($sources as $sourceId) { $getUrl = 'https://www.call2all.co.il/ym/api/GetTemplateEntries'; $getResponse = apiRequest($getUrl, [ 'token' => $token, 'templateId' => $sourceId, ]); if (isset($getResponse['entries'])) { foreach ($getResponse['entries'] as $entry) { $phone = $entry['phone']; $allNumbers[$phone] = [ 'phone' => $phone, 'name' => $entry['name'] ?? '', 'moreinfo' => $entry['moreinfo'] ?? '', 'blocked' => $entry['blocked'] ? 1 : 0, ]; } } } // ביצוע הפעולה שבחר המשתמש if ($action === 'replace') { // אם נבחרה פעולה 'החלפה' - מנקים את כל המספרים מכל היעדים $clearUrl = 'https://www.call2all.co.il/ym/api/ClearTemplateEntries'; foreach ($targets as $targetId) { apiRequest($clearUrl, [ 'token' => $token, 'templateId' => $targetId, ]); } } if ($action === 'add' || $action === 'replace') { // אם נבחרה פעולה 'הוספה' או 'החלפה' - מוסיפים את כל המספרים מהמקורות לכל היעדים $updateUrl = 'https://www.call2all.co.il/ym/api/UpdateTemplateEntry'; foreach ($targets as $targetId) { foreach ($allNumbers as $entry) { apiRequest($updateUrl, [ 'token' => $token, 'templateId' => $targetId, 'phone' => $entry['phone'], 'name' => $entry['name'], 'moreinfo' => $entry['moreinfo'], 'blocked' => $entry['blocked'], ]); $transferredCount++; } } $resultMsg = "בוצעה הוספה של $transferredCount מספרים."; } elseif ($action === 'remove') { // אם נבחרה פעולה 'מחיקה' - מוחקים את כל המספרים מהיעדים $deleteUrl = 'https://www.call2all.co.il/ym/api/ClearTemplateEntries'; foreach ($targets as $targetId) { foreach ($allNumbers as $entry) { apiRequest($deleteUrl, [ 'token' => $token, 'templateId' => $targetId, 'phone' => $entry['phone'], ]); $removedCount++; } } $resultMsg = "בוצעה מחיקה של $removedCount מספרים."; } elseif ($action === 'block') { // אם נבחרה פעולה 'חסימה' - חוסמים את כל המספרים בכל היעדים $blockUrl = 'https://www.call2all.co.il/ym/api/UpdateTemplateEntry'; foreach ($targets as $targetId) { foreach ($allNumbers as $entry) { apiRequest($blockUrl, [ 'token' => $token, 'templateId' => $targetId, 'phone' => $entry['phone'], 'name' => $entry['name'], 'moreinfo' => $entry['moreinfo'], 'blocked' => 1, // חסום ]); $blockedCount++; } } $resultMsg = "בוצעה חסימה של $blockedCount מספרים."; } // שמירת הודעת הצלחה $success = $resultMsg; } else { // אם חסר נתון - הודעת שגיאה מתאימה $error = "יש למלא טוקן, לפחות מקור אחד ולפחות יעד אחד, ולבחור פעולה"; } } ?> <!DOCTYPE html> <html lang="he"> <head> <meta charset="UTF-8"> <title>ניהול רשימות תפוצה</title> <style> /* עיצוב בסיסי לטופס ולרכיבים */ body { font-family: sans-serif; direction: rtl; padding: 20px; max-width: 600px; margin: auto; } label { display: block; margin-top: 10px; } input[type="text"], input[type="number"] { width: 100%; padding: 8px; margin-top: 5px; } button { margin-top: 20px; padding: 10px 20px; font-size: 16px; } .msg { margin-top: 20px; font-weight: bold; } select { width: 100%; padding: 8px; margin-top: 5px; } .dynamic-list { margin-bottom: 10px; } .dynamic-list input { width: 90%; display: inline-block; } .dynamic-list button { width: 8%; display: inline-block; } </style> <script> // פונקציה להוספת שדה מקור/יעד דינמית לטופס // מוסיפה div עם שדה קלט וכפתור X להסרה function addField(listId, inputName) { var list = document.getElementById(listId); var div = document.createElement('div'); div.className = 'dynamic-list'; div.innerHTML = '<input type="number" name="'+inputName+'[]" placeholder="הכנס מזהה"> <button type="button" onclick="this.parentNode.remove();">X</button>'; list.appendChild(div); } </script> </head> <body> <h2>ניהול רשימות תפוצה</h2> <form method="post"> <!-- שדה טוקן --> <label>Token: <input type="text" name="token" required> </label> <!-- שדות מקורות --> <label>מקורות (ללא הגבלה):</label> <div id="sources-list"></div> <button type="button" onclick="addField('sources-list','sources')">הוסף מקור</button> <!-- שדות יעדים --> <label>יעדים (ללא הגבלה):</label> <div id="targets-list"></div> <button type="button" onclick="addField('targets-list','targets')">הוסף יעד</button> <!-- בחירת פעולה --> <label>פעולה: <select name="action" required> <option value="">בחר פעולה</option> <option value="add">הוספה (העתקה)</option> <option value="remove">מחיקה</option> <option value="block">חסימה</option> <option value="replace">החלפה (ניקוי ואז הוספה)</option> </select> </label> <button type="submit">בצע פעולה</button> </form> <?php if (!empty($error)): ?> <!-- הודעת שגיאה אם יש --> <div class="msg" style="color: red;"> <?= htmlspecialchars($error) ?> </div> <?php elseif (!empty($success)): ?> <!-- הודעת הצלחה אם יש --> <div class="msg" style="color: green;"> <?= htmlspecialchars($success) ?> </div> <?php endif; ?> <script> // הוספת שדה ראשון אוטומטית למקורות וליעדים בעת טעינת הדף addField('sources-list','sources'); addField('targets-list','targets'); </script> </body> </html>
בהצלחה גדולה!!
-
-
@זאביק איך שדרגת אותו?
-
@עידו המשכתי לעבוד עליו באותה צורה שאתה יצרת אותו... (וכמובן בדקתי ותיקנתי את הקוד היכן שמצאתי שהוא טעה).