代码之家  ›  专栏  ›  技术社区  ›  Mason Wheeler

如何检索自动报告并将其保存到数据库?

  •  0
  • Mason Wheeler  · 技术社区  · 14 年前

    我有一个web服务器,它将使用python、php或perl编写脚本。我对这些语言都不太了解,但在这三种语言中,python似乎最不可怕。它有一个mysql数据库,我知道足够多的sql来管理它并为它编写查询。

    我还有一个程序,我想添加自动错误报告。出了问题,它会向我的服务器发送错误报告。

    我不知道怎么做的是编写一个python脚本,它将位于web服务器上,当我的程序发送一个bug报告时,执行以下操作:

    • 接收错误报告。
    • 把它分解成几个部分。
    • 把它插入数据库。
    • 让服务器给我发邮件。

    据我所知,如果我只知道自己在做什么,这似乎不太难。有人能给我指一个网站,说明我需要创建这样一个脚本的基本原则吗?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Byron Whitlock    14 年前

    我不懂python,所以我给你看php。

    所以假设你的错误发送代码到 file.php?report=report+is+here

    以下操作将起作用。

    <?
    
     # code to initialize the database here
     $rc = mysql_connect(...);
    
     if (!$rc)
     {
      die ("Could not connect to the database.");
     }
    
     // probably should do some error checking in a try .. catch
     mysql_execute("
                     INSERT INTO BugTable(report) 
                     VALUES('".addslashes($_REQUEST['report'])."')");
    
     mail("youremail@set.com","Bug Report Recieved", "Recieved the following bug report: {$_REQUEST['report']}");
    
     ?>
    

    关于php的一切都在php.net上。

        2
  •  0
  •   Tom Morris    14 年前

    使用python,这取决于您的web主机。一些共享的web主机使用php,然后只通过cgi使用perl/python(和ruby等)。使用python,您可以使用cgi模型构建web内容,或者-如果您有支持它的宿主-wsgi。如果您打算使用python和cgi,请查看cgi模块的文档。或者,使用 web.py . 您基本上需要将输入作为特定uri上的http post消息读取。py文档应该描述如何编写它。

    对于解析-取决于它以何种格式发送。您可以使用x-www-form-encoded来传输简单的键值对。我不知道web.py的复杂性(我主要使用ruby),但它基本上应该为您提供一种获取“request”对象的方法,使用它做一些事情,然后修改一个“return”对象,其中包含返回到浏览器的内容。对于web.py,这是web.input()-请参见 here .

    对于任何更复杂的内容,您基本上需要以您选择的格式发布数据—XML、JSON、神奇的二进制blob格式。你如何分析它取决于它是什么。只需在google上搜索“python xml”或“python json”或其他内容,您就可以找到它的最新库。

    插入到数据库中——使用Python的MySQL数据库(我使用PASGRESs,主要来自Ruby和Java,所以我不完全适应最新的Python MySQL库)。

    对于发送电子邮件,您可以只使用send mail(在安装了sendmail的unix系统上)或使用python的smtplib将其发送到smtp服务器—如果您只是处理管理电子邮件,请使用gmail帐户作为您的smtp服务器,因为您知道它将正常工作。哦,web.py很简单-它有一个内置的 mail module . 我想用这个吧。

    您可能需要考虑安全性—这意味着身份验证和表单验证。rtfm用于您使用的任何语言和数据库库,这样您就不会打开自己的sql注入-对电子邮件也一样。你不想成为垃圾邮件的代理。