


Implementieren Sie die kundenseitige Fehlerberichterstattung mit UsersNAP
Key Takeaways
- usersNap ist ein Tool, mit dem Benutzer Fehler direkt von einer Website melden können, indem ein Screenshot markiert und alle Daten in der JavaScript -Konsole gesendet werden. Es kann in die Website eines Kunden integriert werden, um die Berichterstattung und Lösung von Fehler zu beschleunigen.
- Entwickler können auch UsersNAP verwenden, um serverseitige Fehler und Protokolle zu sammeln. Durch die Verwendung einer einfachen Klasse können sie alle für das Debuggen benötigten Fehler und Protokolle aufzeichnen, die dann an UsersNap übergeben werden können. Dies ermöglicht schnellere und effizientere Fehlerbehebungen.
- userNap bietet auch zusätzliche Informationen wie Bildschirmgröße, Browserversion, Betriebssystem und installierte Browser -Plugins. Diese Funktion kann nur bei Bedarf eingeschaltet werden, und ihre Verfügbarkeit kann durch Methoden wie IP -Filterung oder Öffnen einer Teufel begrenzt werden.* Subdomain.
Stellen Sie sich das folgende Szenario vor: Ihre Kunden besuchen die Website (stellen wir uns diese vor) und sehen Sie alles andere als das erwartete Ergebnis. Die normale Reaktion besteht darin, Sie (zum unangemessensten Zeitpunkt) anzurufen und Sie so schnell wie möglich zu bitten, es zu beheben, weil sie Geld verlieren.
Wie können wir dem Benutzer helfen, den Fehler so genau wie möglich zu melden?

Der Fehler
Lassen Sie uns eine wirklich einfache JSON -Anfrage und einen Fehler haben, um unseren Fall reproduzieren zu können:
<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>
Wenn Sie jetzt die Testwebsite besuchen, werden Sie feststellen, dass es ein Problem gibt.
Die Frage ist: Wie kann der Client es mit allen Daten, die Sie benötigen, um den Fehler zu bekämpfen, schneller melden:
- JSON -Daten,
- serverseitige JavaScript- und xmlhttpsquest-Fehler,
- Einige Kern -PHP -Fehler
- … und Meta -Daten.
Eine interessante Lösung zum Sammeln dieser Informationen ist UsersNap. Ein Widget, mit dem Ihre Benutzer einen Screenshot der Website markieren können, auf der sie sich befinden, und Ihnen alles senden, was sich in der JavaScript -Konsole befindet. PHP -Fehler enden nicht dort, oder? Machen wir sie. Zunächst sammeln wir die Server -Seitenfehler.
Erfassen von Fehlern
Fügen wir dem Beispiel mehr Code hinzu, um zu sehen, wie wir die von uns benötigten Daten sammeln können. Einführung einer wirklich einfachen Klasse, um uns zu helfen:
<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>
Lassen Sie uns diese Klasse nun verwenden, um alle Fehler und Protokolle aufzuzeichnen, die wir möglicherweise benötigen.
<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>
Geben Sie es an UsersNap
weiterFügen wir am Ende unserer Seite den Codes -Snippet von UsersNap -Code hinzu und sehen Sie, was passiert. (Möglicherweise benötigen Sie ein Konto, um dieses Widget zu verwenden. UsersNap bietet kostenlose Lizenzen für Open -Source -Projekte und einen kostenlosen Testzeitraum für kommerzielle.
<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>
Hinweis: Sie würden dies in einer Ansichtsvorlage in einem echten Framework tun, aber da wir hier keine echte MVC -App verwenden, überspringen wir diesen Teil.
Der Benutzer sieht auf der Seite eine Schaltfläche "Berichtsfehler" und schreibt Ihnen eine Nachricht wie "Es funktioniert nicht, reparieren Sie ihn so schnell wie möglich". Im Allgemeinen wären dies nutzlose Informationen, aber dieses Mal lassen wir dieses wunderschöne Fehlerprotokoll auch beigefügt:
Jetzt können Sie sehen, dass die Initialisierung vorhanden ist:
<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>
Sie können die Daten sehen, die wir senden - genauso wie üblich
<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>
Und Sie können die Ausgabe sehen. Ja, das Problem ist da. Offensichtlich gibt es ein Auth -Problem.
<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>
Sie können sogar die Kern -PHP -Fehler erhalten, die Ihnen beim Debugging helfen.
<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>
Ihr Kunde muss nur einmal auf die Schaltfläche klicken und Sie erhalten alles, was Sie brauchen, um den Fehler schneller zu bekämpfen:
- Fehler und Protokolle (wie oben gezeigt)
- Annotierter Screenshot - Wenn das Problem komplexer ist als dieses einfache Beispiel
- Bildschirmgröße, Browserversion, Betriebssystem und die im Browser installierten Plugins
Natürlich können Sie diese Funktion nur dann einschalten, wenn Ihr Kunde sie benötigt. Um die Verfügbarkeit des Widgets einzuschränken, fügen Sie einen IP -Filter oder eine Abfrageparamessgrenze hinzu, öffnen Sie eine Dev.* Subdomain usw.
Schlussfolgerung
Dies ist kein Skriptüberwachungsinstrument und liefert nicht automatisch Informationen, wann und wenn das Problem angezeigt wird. Dieser Ansatz funktioniert nur, wenn ein Benutzer oder ein Client einen Fehler meldet und Sie als Entwickler oder QA weitere Informationen zur Bekämpfung des Fehlers benötigen. Stellen Sie sich vor
Ich würde gerne alle Ihre Fragen beantworten! Hinterlassen Sie Ihr Feedback unten!häufig gestellte Fragen (FAQs) zur Client-Seite-Fehlerberichterstattung mit UsersNap
Wie funktioniert UsersNap für die kundenseitige Fehlerberichterstattung? Es erfasst Screenshots des Problems zusammen mit wichtigen Browserinformationen, die dann an das Entwicklungsteam gesendet werden. Dadurch wird die Notwendigkeit einer Hin- und Her-Kommunikation beseitigt und beschleunigt den Fehlerbehebungsprozess. UserSnap integriert sich auch in beliebte Projektmanagement- und Kommunikationstools für Projektmanagement und Kommunikation und macht es zu einer vielseitigen Lösung für verschiedene Teams. Tool für Fehlerberichterstattung. Dazu gehören Screenshot erfassen, Browserinformationssammlung, Konsolenprotokollaufzeichnung und Benutzerfeedback -Sammlung. Es bietet auch Integrationen mit beliebten Tools wie Slack, Jira und Trello. Darüber hinaus bietet UsSnap eine API für eine weitere Anpassung und Integration in andere Systeme.
Wie kann ich UsersNap in meine Webanwendung integrieren? Sie müssen sich für ein UsersNap -Konto anmelden, ein neues Projekt erstellen und dann den bereitgestellten JavaScript -Code zu Ihrer Webanwendung hinzufügen. Dieser Code lädt das UserSnap -Widget in Ihrer Anwendung, sodass Benutzer Fehler direkt melden können. Sie können die Farbe, den Text und die Position des Widgets so ändern, dass sie Ihrer Marke entspricht. Sie können das Feedback -Formular auch anpassen, um bestimmte Informationen von Ihren Benutzern zu sammeln. All dies kann über das UsersNap -Dashboard oder über die API erfolgen. Bugs, UsersNap hilft Ihnen, Probleme schneller zu identifizieren und zu beheben. Das visuelle Feedback und detaillierte Browserinformationen helfen Ihrem Entwicklungsteam, die Probleme leicht zu verstehen und zu reproduzieren. Dies führt zu schnelleren Fehlerbehebungen und Verbesserungen, wodurch die Gesamtqualität Ihrer Webanwendung verbessert wird. Programmierschnittstellen, mit denen Sie programmgesteuert mit UsersNap interagieren können. Sie können die API verwenden, um Projekte zu erstellen, zu aktualisieren und zu verwalten und das Widget von UsersNap anzupassen. Die API ist erholsam und verwendet Standard -HTTP -Methoden, wodurch es einfach ist, in Ihre vorhandenen Systeme zu integrieren. Das Tool verfolgt die Benutzeraktivität nicht oder sammelt keine personenbezogenen Daten ohne Zustimmung. Alle gesammelten Daten werden sicher gespeichert und nur zum Zwecke der Fehlerberichterstattung verwendet. UsersNap entspricht auch der DSGVO und anderen Datenschutzbestimmungen. Das UsersNap -Widget reagiert und funktioniert gut auf mobilen Geräten. Auf diese Weise können Ihre Benutzer Fehler direkt von ihren mobilen Browsern melden und Ihnen ein wertvolles Feedback zur Verbesserung Ihrer mobilen Webanwendung geben. Für sein visuelles Feedback und detaillierte Browserinformationen, die die Fehlerberichterstattung und die Behebung effizienter gestalten. Es bietet auch eine Reihe von Anpassungsoptionen und Integrationen mit beliebten Tools. Während andere Tools ähnliche Funktionen bieten, machen die Einfachheit und die Vielseitigkeit von Benutzernap für viele Teams eine bevorzugte Wahl. Dies beinhaltet detaillierte Dokumentation, API -Referenz und Beispiele, mit denen Sie beginnen und das Werkzeug optimal nutzen können. UsersNap bietet auch E -Mail -Support für alle Fragen oder Probleme, die Sie möglicherweise haben.
Das obige ist der detaillierte Inhalt vonImplementieren Sie die kundenseitige Fehlerberichterstattung mit UsersNAP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

PHP wird in E-Commerce, Content Management Systems und API-Entwicklung häufig verwendet. 1) E-Commerce: Wird für die Einkaufswagenfunktion und Zahlungsabwicklung verwendet. 2) Content -Management -System: Wird für die Erzeugung der dynamischen Inhalte und die Benutzerverwaltung verwendet. 3) API -Entwicklung: Wird für die erholsame API -Entwicklung und die API -Sicherheit verwendet. Durch Leistungsoptimierung und Best Practices werden die Effizienz und Wartbarkeit von PHP -Anwendungen verbessert.

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

PHP ist immer noch dynamisch und nimmt immer noch eine wichtige Position im Bereich der modernen Programmierung ein. 1) Einfachheit und leistungsstarke Unterstützung von PHP machen es in der Webentwicklung weit verbreitet. 2) Seine Flexibilität und Stabilität machen es ausstehend bei der Behandlung von Webformularen, Datenbankoperationen und Dateiverarbeitung; 3) PHP entwickelt sich ständig weiter und optimiert, geeignet für Anfänger und erfahrene Entwickler.

PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

PHP eignet sich für die Webentwicklung, insbesondere für die schnelle Entwicklung und Verarbeitung dynamischer Inhalte, ist jedoch nicht gut in Anwendungen auf Datenwissenschaft und Unternehmensebene. Im Vergleich zu Python hat PHP mehr Vorteile in der Webentwicklung, ist aber nicht so gut wie Python im Bereich der Datenwissenschaft. Im Vergleich zu Java wird PHP in Anwendungen auf Unternehmensebene schlechter, ist jedoch flexibler in der Webentwicklung. Im Vergleich zu JavaScript ist PHP in der Back-End-Entwicklung präziser, ist jedoch in der Front-End-Entwicklung nicht so gut wie JavaScript.
