פקודה המבוצעת פעמיים?
-
הכנתי קובץ שמעלה את הרישום של המשתמש ל
EnterIDValName.ini
ע"י רישום בשלוחה לקבלת נתונים, הקובץ מוריד את הטבלה, מוצא את הרישום ששייך לטלפון ומעלה את המספר = הרישום לקובץ הנ"לכמובן לאחר שמוריד גם את הקובץ EnterIDValName.ini המקורי שיש בו את כל מי שכבר רשום.
משום מה כל שם חדש נרשם פעמיים
[זה לא כ"כ נורא אבל מרגיז]
האם מישהו יודע איך זה יכול להיות
מצורף הקוד שמופעל ע"י שלוחת API
תודה
[מי שזה עוזר לו יכול להשתמש חופשי]
<?php $ApiPhone = $_GET['ApiPhone']; //$ApiPhone = '058000000'; //קובץ וול ניים ישן $wny = file_get_contents("http://call2all.co.il/ym/api/GetTextFile?token=077007700:1234&what=ivr2:/EnterID/EnterIDValName.ini"); //המרה לגייסון $wny = json_decode($wny,true); //החלק של התוכן $wny = $wny ["contents"]; //קובץ נרשמים חדשים $r = file_get_contents("http://call2all.co.il/ym/api/GetTextFile?token=077007700:1234&what=ivr2:/555/ApprovalAll.ymgr"); //להמיר את זה לפורמט //$r = json_decode($r,true); //עכשיו מכיון שאנחנו מקבלים בתשובה מימות המשיח עוד כמה נתונים , נשלוף מתוך התשובה את הנתונים שאנחנו צריכים (תוכן הקובץ) //$r = $r ["contents"]; //עכשיו המשתנה מכיל את תוכן הקובץ מהמערכת, ואפשר לערך אותו בשרת (טיפל במחרוזות) //מבודד את השורה $f = stripos($r,$ApiPhone,0); $a = substr($r, $f,400); //מבודד את הערך $h = stripos($a,"%p050",0); $e = stripos($a,'\r\n',0); $j = substr($a, $h+6,$e-($h+6)); //יוצר את הוויל ניים החדש $wn1 ="$ApiPhone=$j "; //מחבר את כל הטקסט להעלאה $wnn = "$wn1$wny"; //זיהוי מערכת להעלות את הקובץ $con = new connecting_to_yemot_api('077007700', '1234'); //יוצר קובץ להעלאה $File = new oFile('EnterIDValName.ini', 'text/plain', $wnn); //מיקום הקובץ $body = array ( 'path' => 'ivr2:EnterID/EnterIDValName.ini', 'convertAudio' => 0, 'fileUpload' => $File ); //הפעלת העלאת הקובץ $a = $con -> connecting('UploadFile', $body); $b = $a->responseStatus; if ($b <> 'OK'){ echo "id_list_message=t-שגיאה בהכנסת הנתונים, נא נסו שנית."; }else{ echo "id_list_message=t-נרשמתם בהצלחה."; } //הדפס תשובה //print_r($a); //המחלקה class BodyPost { // part "multipart/form-data" public static function PartPost($name, $val) { $body = 'Content-Disposition: form-data; name="' . $name . '"'; // check instance of oFile if($val instanceof oFile) { $file = $val->Name(); $mime = $val->Mime(); $cont = $val->Content(); $body .= '; filename="' . $file . '"' . "\r\n"; $body .= 'Content-Type: ' . $mime ."\r\n\r\n"; $body .= $cont."\r\n"; } else $body .= "\r\n\r\n".$val."\r\n"; return $body; } public static function Get(array $post, $delimiter = '-------------0123456789') { if(is_array($post) && !empty($post)) { $bool = true; //foreach($post as $val) if($val instanceof oFile) {$bool = true; break; }; if($bool) { $ret = ''; foreach($post as $name=>$val) $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val); $ret .= "--" . $delimiter . "--\r\n"; } else $ret = http_build_query($post); } else throw new \Exception('Error input param!'); return $ret; } } class oFile { private $name; private $mime; private $content; public function __construct($name, $mime=null, $content=null) { if(is_null($content)) { $info = pathinfo($name); // check is exist and readable file if(!empty($info['basename']) && is_readable($name)) { $this->name = $info['basename']; // get MIME $this->mime = mime_content_type($name); // load file $content = file_get_contents($name); if($content!==false) { $this->content = $content; } else { throw new Exception('Don`t get content - "'.$name.'"'); } } else { throw new Exception('Error param'); } } else { $this->name = $name; if(is_null($mime)) $mime = mime_content_type($name); $this->mime = $mime; $this->content = $content; }; } public function Name() { return $this->name; } public function Mime() { return $this->mime; } public function Content() { return $this->content; } } class connecting_to_yemot_api { public $token; const URL = 'https://www.call2all.co.il/ym/api/'; public function __construct($user_name, $password) { $body = array('username' => $user_name, 'password' => $password); $body = http_build_query($body); $opts = array('http' => array( 'method' => 'POST', 'header' => "Content-Type: application/x-www-form-urlencoded", 'content' => $body, 'follow_location' => false) ); $context = stream_context_create($opts); $url = self::URL.'Login'; $result = file_get_contents($url, FALSE, $context); $result = json_decode($result); if($result -> responseStatus == 'OK') { $this -> token = $result -> token; return TRUE; } else { throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים'); } } public function __destruct() { $this -> connecting('Logout'); } public function connecting($action, $body = array()) { $delimiter = '----'.uniqid(); $body['token'] = $this -> token; $body = BodyPost::Get($body, $delimiter); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: multipart/form-data; boundary='.$delimiter, 'content' => $body, 'follow_location' => false ) ); $context = stream_context_create($opts); $url = self::URL.$action; $result = file_get_contents($url, FALSE, $context); $headers = $this -> parseHeaders($http_response_header); if($headers['Content-Type'][0] == 'application/json') { return json_decode($result); } else { return $result; } } private function parseHeaders($headers) { // פונקציה שמקבלת מערך של שורות הכותרות // הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד // מערך הכותרות $head = array(); foreach( $headers as $k=>$v ) { $t = explode( ':', $v, 2 ); if( isset( $t[1] ) ) { if($t[0] == 'Set-Cookie') { $CookiesArr = array(); $cookies = explode( ';', $t[1]); foreach($cookies as $cookie) { $c = explode( '=', $cookie); if( isset( $c[1] ) ) { $CookiesArr[ trim($c[0]) ] = trim( $c[1] ); } else { $CookiesArr[] = trim( $c[0] ); } } $head[ trim($t[0]) ] = $CookiesArr; } elseif($t[0] == 'Content-Type') { $arr = array(); $children = explode( ';', $t[1]); foreach($children as $child) { $c = explode( '=', $child); if( isset( $c[1] ) ) { $arr[ trim($c[0]) ] = trim( $c[1] ); } else { $arr[] = trim( $c[0] ); } } $head[ trim($t[0]) ] = $arr; } else { $head[ trim($t[0]) ] = trim( $t[1] ); } } else { $head[] = $v; if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) ) { $head['reponse_code'] = intval($out[1]); } } } return $head; } }
-
@מנסה
תוסיף את הקוד הבא בהתחלהif (isset($_GET['hangup'])) {exit();}
בנוסף לא מבין למה אתה צריך להשתמש עם המחלקה
-
-
@מנסה
אז תפתח נושא חדש ותסביר שמה מה ניסית ומה לא הלך לך -
תודה אבל בנתיים אני מסתדר עם המחלקה אז מה אכפת לי...
-
אין עליך, מגיע ומסתער על הצריכים עזרה
תכלס, הוספתיאת הקוד וזה ממשיך להכניס פעמיים.
אגב כשאני מריץ אותו מהמחשב [ללא GET, אלא רושם מספר לבד], אין את הבעיה הזאת, רק בשיחה מימות הוא מגיב ככה
-
@מנסה
תוכל להעלות שוב את כל הקוד? -
תודה
<?php if (isset($_GET['hangup'])) {exit();} $ApiPhone = $_GET['ApiPhone']; //$ApiPhone = '058000000'; //קובץ וול ניים ישן $wny = file_get_contents("http://call2all.co.il/ym/api/GetTextFile?token=077000000:1234&what=ivr2:/EnterID/EnterIDValName.ini"); //המרה לגייסון $wny = json_decode($wny,true); //החלק של התוכן $wny = $wny ["contents"]; //קובץ נרשמים חדשים $r = file_get_contents("http://call2all.co.il/ym/api/GetTextFile?token=077000000:1234&what=ivr2:/555/ApprovalAll.ymgr"); //להמיר את זה לפורמט //$r = json_decode($r,true); //עכשיו מכיון שאנחנו מקבלים בתשובה מימות המשיח עוד כמה נתונים , נשלוף מתוך התשובה את הנתונים שאנחנו צריכים (תוכן הקובץ) //$r = $r ["contents"]; //עכשיו המשתנה מכיל את תוכן הקובץ מהמערכת, ואפשר לערך אותו בשרת (טיפל במחרוזות) //מבודד את השורה $f = stripos($r,$ApiPhone,0); $a = substr($r, $f,400); //מבודד את הערך $h = stripos($a,"%p050",0); $e = stripos($a,'\r\n',0); $j = substr($a, $h+6,$e-($h+6)); //יוצר את הוויל ניים החדש $wn1 ="$ApiPhone=$j "; //מחבר את כל הטקסט להעלאה $wnn = "$wn1$wny"; //זיהוי מערכת להעלות את הקובץ $con = new connecting_to_yemot_api('077000000', '1234'); //יוצר קובץ להעלאה $File = new oFile('EnterIDValName.ini', 'text/plain', $wnn); //מיקום הקובץ $body = array ( 'path' => 'ivr2:EnterID/EnterIDValName.ini', 'convertAudio' => 0, 'fileUpload' => $File ); //הפעלת העלאת הקובץ $a = $con -> connecting('UploadFile', $body); $b = $a->responseStatus; if ($b <> 'OK'){ echo "id_list_message=t-שגיאה בהכנסת הנתונים, נא נסו שנית."; }else{ echo "id_list_message=t-נרשמתם בהצלחה."; } //המחלקה class BodyPost { // part "multipart/form-data" public static function PartPost($name, $val) { $body = 'Content-Disposition: form-data; name="' . $name . '"'; // check instance of oFile if($val instanceof oFile) { $file = $val->Name(); $mime = $val->Mime(); $cont = $val->Content(); $body .= '; filename="' . $file . '"' . "\r\n"; $body .= 'Content-Type: ' . $mime ."\r\n\r\n"; $body .= $cont."\r\n"; } else $body .= "\r\n\r\n".$val."\r\n"; return $body; } public static function Get(array $post, $delimiter = '-------------0123456789') { if(is_array($post) && !empty($post)) { $bool = true; //foreach($post as $val) if($val instanceof oFile) {$bool = true; break; }; if($bool) { $ret = ''; foreach($post as $name=>$val) $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val); $ret .= "--" . $delimiter . "--\r\n"; } else $ret = http_build_query($post); } else throw new \Exception('Error input param!'); return $ret; } } class oFile { private $name; private $mime; private $content; public function __construct($name, $mime=null, $content=null) { if(is_null($content)) { $info = pathinfo($name); // check is exist and readable file if(!empty($info['basename']) && is_readable($name)) { $this->name = $info['basename']; // get MIME $this->mime = mime_content_type($name); // load file $content = file_get_contents($name); if($content!==false) { $this->content = $content; } else { throw new Exception('Don`t get content - "'.$name.'"'); } } else { throw new Exception('Error param'); } } else { $this->name = $name; if(is_null($mime)) $mime = mime_content_type($name); $this->mime = $mime; $this->content = $content; }; } public function Name() { return $this->name; } public function Mime() { return $this->mime; } public function Content() { return $this->content; } } class connecting_to_yemot_api { public $token; const URL = 'https://www.call2all.co.il/ym/api/'; public function __construct($user_name, $password) { $body = array('username' => $user_name, 'password' => $password); $body = http_build_query($body); $opts = array('http' => array( 'method' => 'POST', 'header' => "Content-Type: application/x-www-form-urlencoded", 'content' => $body, 'follow_location' => false) ); $context = stream_context_create($opts); $url = self::URL.'Login'; $result = file_get_contents($url, FALSE, $context); $result = json_decode($result); if($result -> responseStatus == 'OK') { $this -> token = $result -> token; return TRUE; } else { throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים'); } } public function __destruct() { $this -> connecting('Logout'); } public function connecting($action, $body = array()) { $delimiter = '----'.uniqid(); $body['token'] = $this -> token; $body = BodyPost::Get($body, $delimiter); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: multipart/form-data; boundary='.$delimiter, 'content' => $body, 'follow_location' => false ) ); $context = stream_context_create($opts); $url = self::URL.$action; $result = file_get_contents($url, FALSE, $context); $headers = $this -> parseHeaders($http_response_header); if($headers['Content-Type'][0] == 'application/json') { return json_decode($result); } else { return $result; } } private function parseHeaders($headers) { // פונקציה שמקבלת מערך של שורות הכותרות // הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד // מערך הכותרות $head = array(); foreach( $headers as $k=>$v ) { $t = explode( ':', $v, 2 ); if( isset( $t[1] ) ) { if($t[0] == 'Set-Cookie') { $CookiesArr = array(); $cookies = explode( ';', $t[1]); foreach($cookies as $cookie) { $c = explode( '=', $cookie); if( isset( $c[1] ) ) { $CookiesArr[ trim($c[0]) ] = trim( $c[1] ); } else { $CookiesArr[] = trim( $c[0] ); } } $head[ trim($t[0]) ] = $CookiesArr; } elseif($t[0] == 'Content-Type') { $arr = array(); $children = explode( ';', $t[1]); foreach($children as $child) { $c = explode( '=', $child); if( isset( $c[1] ) ) { $arr[ trim($c[0]) ] = trim( $c[1] ); } else { $arr[] = trim( $c[0] ); } } $head[ trim($t[0]) ] = $arr; } else { $head[ trim($t[0]) ] = trim( $t[1] ); } } else { $head[] = $v; if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) ) { $head['reponse_code'] = intval($out[1]); } } } return $head; } }
-
@מנסה
תנסה את הקוד הבא<?php if (isset($_GET['hangup'])) {exit();} $ApiPhone = $_GET['ApiPhone']; //$ApiPhone = '058000000'; //קובץ וול ניים ישן $wny = file_get_contents("http://call2all.co.il/ym/api/GetTextFile?token=077000000:1234&what=ivr2:/EnterID/EnterIDValName.ini"); //המרה לגייסון $wny = json_decode($wny,true); //החלק של התוכן $wny = $wny ["contents"]; //קובץ נרשמים חדשים $r = file_get_contents("http://call2all.co.il/ym/api/GetTextFile?token=077000000:1234&what=ivr2:/555/ApprovalAll.ymgr"); //להמיר את זה לפורמט //$r = json_decode($r,true); //עכשיו מכיון שאנחנו מקבלים בתשובה מימות המשיח עוד כמה נתונים , נשלוף מתוך התשובה את הנתונים שאנחנו צריכים (תוכן הקובץ) //$r = $r ["contents"]; //עכשיו המשתנה מכיל את תוכן הקובץ מהמערכת, ואפשר לערך אותו בשרת (טיפל במחרוזות) //מבודד את השורה $f = stripos($r,$ApiPhone,0); $a = substr($r, $f,400); //מבודד את הערך $h = stripos($a,"%p050",0); $e = stripos($a,'\r\n',0); $j = substr($a, $h+6,$e-($h+6)); //יוצר את הוויל ניים החדש $wn1 ="$ApiPhone=$j "; //מחבר את כל הטקסט להעלאה $wnn = "$wn1$wny"; $b = file_get_contents("https://www.call2all.co.il/ym/api/UploadTextFile?token=077:1234&what=ivr2:EnterID/EnterIDValName.ini&contents=$wnn"); //המרה לגייסון $b = json_decode($b,true); $b =$b["responseStatus"]; if ($b <> 'OK'){ echo "id_list_message=t-שגיאה בהכנסת הנתונים, נא נסו שנית."; }else{ echo "id_list_message=t-נרשמתם בהצלחה."; }
-
זאת התשובה
גם בטלפון וגם דרך הדפדפן
id_list_message=t-שגיאה בהכנסת הנתונים, נא נסו שנית.
אגב, הקובץ מכיל ים של שמות כך שנראה לי שאי אפשר להעלות כ"כ הרבה באמצעות
UploadTextFile
[איןלי מושג מה ההגבלה של הפקודה הזאת אבל אני יודע של
GetTextFile
יש הגבלה של כ2500 תווים -
@מנסה אמר בפקודה המבוצעת פעמיים?:
זאת התשובה
גם בטלפון וגם דרך הדפדפן
id_list_message=t-שגיאה בהכנסת הנתונים, נא נסו שנית.
אגב, הקובץ מכיל ים של שמות כך שנראה לי שאי אפשר להעלות כ"כ הרבה באמצעות
UploadTextFile
[איןלי מושג מה ההגבלה של הפקודה הזאת אבל אני יודע של
GetTextFile
יש הגבלה של כ2500 תוויםלא נראה לי שיש הגבלה בשימוש עם
UploadTextFile
,
אבל אתה משתמש בGET ושם בהחלט יש הגבלה כללית על גודל ה URL..
תעלה בPOST. -
@מנסה אמר בפקודה המבוצעת פעמיים?:
זאת התשובה
גם בטלפון וגם דרך הדפדפןאבל בתכליס זה מעלה את השמות או שלא?
-
לא
[בנתיים אין לי מושג למה, זה הפסיק להעלות פעמיים, אולי בזכות השורה שהכנסת לי, בכל אופן תודה רבה]
-
@מנסה אמר בפקודה המבוצעת פעמיים?:
לא
[בנתיים אין לי מושג למה, זה הפסיק להעלות פעמיים, אולי בזכות השורה שהכנסת לי, בכל אופן תודה רבה]
לא אולי זה בטוח בגלל זה
אבל מוזר למה הקוד הנ"ל לא עובד לך תנסה את זה וכמובן תשנה את המספרי מערכת וסיסמאות וכו<?php if (isset($_GET['hangup'])) {exit();} $ApiPhone = $_GET['ApiPhone']; //$ApiPhone = '058000000'; //קובץ וול ניים ישן $wny = file_get_contents("http://call2all.co.il/ym/api/GetTextFile?token=077000000:1234&what=ivr2:/EnterID/EnterIDValName.ini"); //המרה לגייסון $wny = json_decode($wny,true); //החלק של התוכן $wny = $wny ["contents"]; //קובץ נרשמים חדשים $r = file_get_contents("http://call2all.co.il/ym/api/GetTextFile?token=077000000:1234&what=ivr2:/555/ApprovalAll.ymgr"); //להמיר את זה לפורמט $r = json_decode($r,true); //עכשיו מכיון שאנחנו מקבלים בתשובה מימות המשיח עוד כמה נתונים , נשלוף מתוך התשובה את הנתונים שאנחנו צריכים (תוכן הקובץ) $r = $r ["contents"]; //עכשיו המשתנה מכיל את תוכן הקובץ מהמערכת, ואפשר לערך אותו בשרת (טיפל במחרוזות) //מבודד את השורה $f = stripos($r,$ApiPhone,0); $a = substr($r, $f,400); //מבודד את הערך $h = stripos($a,"%p050",0); $e = stripos($a,'\r\n',0); $j = substr($a, $h+6,$e-($h+6)); //יוצר את הוויל ניים החדש $wn1 ="$ApiPhone=$j"; //מחבר את כל הטקסט להעלאה $wnn = "$wn1$wny"; $b = file_get_contents("https://www.call2all.co.il/ym/api/UploadTextFile?token=077:1234&what=ivr2:EnterID/EnterIDValName.ini&contents=$wnn"); //המרה לגייסון $b = json_decode($b,true); $b =$b["responseStatus"]; if ($b <> 'OK'){ echo "id_list_message=t-שגיאה בהכנסת הנתונים, נא נסו שנית."; }else{ echo "id_list_message=t-נרשמתם בהצלחה."; }