>
錯誤
的問題是 - 客戶如何使用與錯誤對抗的所有數據更快地報告:
<span>$json_data = '{"value":1,"apples":2,"name":3,"oranges":4,"last one":5}'; </span> <span>//we will simulate the json data, but imagine that this is the normal data exchanged daily between your client’s website and a 3rd party API </span> <span>$ch = curl_init('http://talkweb.eu/labs/fr/json_callback.php'); </span><span>curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); </span><span>curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', </span> <span>'Content-Length: ' . strlen($json_data))); </span> <span>//the normal CURL request, nothing strange here: </span><span>$result = curl_exec($ch); </span> <span>//receiving the data back </span><span>$f_data = json_decode($result,true); </span> <span>//showing a greeting with the output </span><span>echo “Welcome”. $f_data['username'];</span>
>服務器端JavaScript和XMLHTTPSREQUEST錯誤,
一些核心PHP錯誤
現在,讓我們使用此類記錄所有可能需要的錯誤和日誌。
>讓我們在頁面末尾添加Usernap代碼段,看看會發生什麼。 (您可能需要一個帳戶才能使用此窗口小部件。AuserNap為開源項目提供免費許可證,並為商業項目提供免費測試期。
<span><span><? </span></span><span><span>class SendToUsersnap </span></span><span><span>{ </span></span><span> <span>var $m; </span></span><span> <span>//Save all logs in an array. You can use an even more elegant approach but right now I need it to be simple for the sake of this tutorial. </span></span><span> <span>function log ( $data, $type ) { </span></span><span> </span><span> <span>if( is_array( $data ) || is_object( $data ) ) { </span></span><span> <span>$this->m[]= "console.".$type."('PHP: ".json_encode($data)."');"; </span></span><span> <span>} else { </span></span><span> <span>$this->m[] = "console.".$type."('PHP: ".$data."');"; </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>// Print all logs that have been set from the previous function. Let’s keep it simple. </span></span><span> <span>function out (){ </span></span><span> <span>for ($i=0;$i<count($this->m);$i++) </span></span><span> <span>{ </span></span><span> <span>echo $this->m[$i]."\n"; </span></span><span> <span>} </span></span><span> </span><span> </span><span> <span>} </span></span><span><span>}</span></span>
注意:您將在真實框架中的視圖模板中執行此操作,但是由於我們在這裡不使用真實的MVC應用程序,因此我們跳過了那部分。
>用戶將在頁面上看到一個“報告錯誤”按鈕,並將給您寫一條諸如“它不起作用,盡快修復”之類的消息。通常,這將是無用的信息,但是這次,我們也附上了此華麗的錯誤日誌:
>
<span>$json_data = '{"value":1,"apples":2,"name":3,"oranges":4,"last one":5}'; </span> <span>//we will simulate the json data, but imagine that this is the normal data exchanged daily between your client’s website and a 3rd party API </span> <span>$ch = curl_init('http://talkweb.eu/labs/fr/json_callback.php'); </span><span>curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); </span><span>curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', </span> <span>'Content-Length: ' . strlen($json_data))); </span> <span>//the normal CURL request, nothing strange here: </span><span>$result = curl_exec($ch); </span> <span>//receiving the data back </span><span>$f_data = json_decode($result,true); </span> <span>//showing a greeting with the output </span><span>echo “Welcome”. $f_data['username'];</span>
<span><span><? </span></span><span><span>class SendToUsersnap </span></span><span><span>{ </span></span><span> <span>var $m; </span></span><span> <span>//Save all logs in an array. You can use an even more elegant approach but right now I need it to be simple for the sake of this tutorial. </span></span><span> <span>function log ( $data, $type ) { </span></span><span> </span><span> <span>if( is_array( $data ) || is_object( $data ) ) { </span></span><span> <span>$this->m[]= "console.".$type."('PHP: ".json_encode($data)."');"; </span></span><span> <span>} else { </span></span><span> <span>$this->m[] = "console.".$type."('PHP: ".$data."');"; </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>// Print all logs that have been set from the previous function. Let’s keep it simple. </span></span><span> <span>function out (){ </span></span><span> <span>for ($i=0;$i<count($this->m);$i++) </span></span><span> <span>{ </span></span><span> <span>echo $this->m[$i]."\n"; </span></span><span> <span>} </span></span><span> </span><span> </span><span> <span>} </span></span><span><span>}</span></span>
<span>require_once('Usersnap.class.php'); </span> <span>$s = new SendToUsersnap; </span> <span>$json_data = '{"value":1,"apples":2,"name":3,"oranges":4,"last one":5}'; </span> <span>$s->log('Initializing the JSON request',"info"); </span> <span>$s->log($json_data,"log"); </span> <span>$ch = curl_init('http://talkweb.eu/labs/fr/json_callback.php'); </span> <span>curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); </span> <span>curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); </span> <span>curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); </span> <span>curl_setopt($ch, CURLOPT_HTTPHEADER, array( </span> <span>'Content-Type: application/json', </span> <span>'Content-Length: ' . strlen($json_data))); </span> <span>$result = curl_exec($ch); </span> <span>$f_data = json_decode($result,true); </span> <span>echo 'Welcome'. $f_data['usersname']; </span> <span>$s->log($f_data,"log"); </span> <span>$s->log(error_get_last(),"error");</span>
>
<span><span><span><script</span> type<span>="text/javascript"</span>></span><span> </span></span><span><span> <span>(function() { </span></span></span><span><span> <span>var s = document.createElement("script"); </span></span></span><span><span> s<span>.type = "text/javascript"; </span></span></span><span><span> s<span>.async = true; </span></span></span><span><span> s<span>.src = '//api.usersnap.com/load/'+ </span></span></span><span><span> <span>'your-api-key-here.js'; </span></span></span><span><span> <span>var x = document.getElementsByTagName('script')[0]; </span></span></span><span><span> x<span>.parentNode.insertBefore(s, x); </span></span></span><span><span> <span>})(); </span></span></span><span><span> </span></span><span><span> <span>var _usersnapconfig = { </span></span></span><span><span> <span>loadHandler: function() { </span></span></span><span><span> <span><span><?php </span></span></span></span><span><span><span> <span>//just print all errors collected from the buffer. </span></span></span></span><span><span><span> <span>$s->out(); ?></span> </span></span></span><span><span> <span>} </span></span></span><span><span> <span>}; </span></span></span><span><span></span><span><span></script</span>></span></span>
這不是腳本監控工具,不會在出現問題時自動提供信息。只有在用戶或客戶端報告錯誤的情況下,您作為開發人員或QA需要有關如何對抗錯誤的更多信息才能起作用。想像它是遠程調試器,但對於客戶端錯誤事件和您從PHP發送到JavaScript的數據。
經常詢問的問題(常見問題解答)有關用戶
的客戶端錯誤報告>用戶nap如何用於客戶端錯誤報告?
usernap是一個可視化錯誤跟踪工具,允許用戶直接從其Web應用程序報告錯誤。它通過捕獲問題的屏幕截圖以及重要的瀏覽器信息來起作用,然後將其發送給開發團隊。這消除了來回通信的需求,並加快了錯誤修復過程。 userSNap還與流行的項目管理和通信工具集成在一起,使其成為各個團隊的多功能解決方案。 > usersNap的關鍵功能是什麼? 用於錯誤報告的工具。其中包括屏幕截圖捕獲,瀏覽器信息收集,控制台日誌記錄和用戶反饋收集。它還提供了與Slack,Jira和Trello等流行工具等流行工具的集成。此外,Usernap還提供了用於與其他系統的進一步自定義和集成的API。>將用戶NAP集成到您的Web應用程序中很簡單。您需要註冊一個用戶NAP帳戶,創建一個新項目,然後將提供的JavaScript代碼添加到您的Web應用程序中。此代碼將在您的應用程序上加載usernap窗口小部件,允許用戶直接報告錯誤。
是,是的,用戶nusernap為widget提供了一系列自定義選項。您可以更改小部件的顏色,文字和位置,以匹配您的品牌。您還可以自定義反饋表格,以收集用戶的特定信息。所有這些都可以通過UsersNap儀表板或通過API完成。
什麼是UsersNap API,我該如何使用它?
用戶nap認真對待用戶隱私。未經同意,該工具不會跟踪用戶活動或收集個人數據。所有收集的數據均已安全存儲,僅用於錯誤報告目的。 usernap還符合GDPR和其他隱私法規。
>是的,usersNap支持移動錯誤報告。 UsersNap小部件響應迅速,在移動設備上運行良好。這使您的用戶可以直接從其移動瀏覽器報告錯誤,從而為您提供有價值的反饋,以改善移動Web應用程序。
>用戶nap提供了什麼支持?
usernap為其用戶提供全面的支持。這包括詳細的文檔,API參考和示例,以幫助您開始並充分利用工具。 usersNap還為您可能遇到的任何查詢或問題提供電子郵件支持。 >以上是用Usernap實現客戶端錯誤報告的詳細內容。更多資訊請關注PHP中文網其他相關文章!