>
错误
的问题是 - 客户如何使用与错误对抗的所有数据更快地报告:
<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中文网其他相关文章!