0

我有一个网络服务器,可以接受 Python、PHP 或 Perl 中的脚本。我对这些语言中的任何一种都不太了解,但在这三种语言中,Python 似乎最不可怕。它有一个 MySql 数据库设置,我知道足够的 SQL 来管理它并为它编写查询。

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

我不知道如何编写一个 Python 脚本,它将位于 Web 服务器上,当我的程序发送错误报告时,请执行以下操作:

  • 接收错误报告。
  • 将其解析为多个部分。
  • 将其插入数据库。
  • 让服务器给我发一封电子邮件。

据我所知,如果我只知道自己在做什么,这似乎应该不会太难。有人可以将我指向一个解释我需要创建这样的脚本的基本原则的网站吗?

4

2 回答 2

0

我不知道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 上。

于 2010-03-18T23:51:49.547 回答
0

使用 Python,这取决于您的网络托管。一些共享网络主机做 PHP,然后只做 Perl/Python(和 Ruby 等)通过 CGI。使用 Python,您可以使用 CGI 模型或 - 如果您有支持它的主机 - WSGI 来构建 Web 内容。如果您打算使用 Python 和 CGI​​,只需查看 cgi 模块的文档即可。或者,使用web.py。您基本上需要将输入作为特定 URI 上的 HTTP POST 消息读取。web.py 文档应该描述如何编写它。

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

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

插入数据库 - 使用 Python 的 mysqldb 库(我使用 Postgres,主要来自 Ruby 和 Java,所以我并不完全熟悉最新的 Python MySQL 库)。

对于发送电子邮件,您可以只使用 sendmail(在安装了 sendmail 的 Unix 系统上),也可以使用 Python 的 smtplib 将其发送到 SMTP 服务器 - 如果您只是在处理管理员电子邮件,请使用 Gmail 之类的东西帐户作为您的 SMTP 服务器,因为您知道它会起作用。哦,web.py 很容易——它有一个内置的邮件模块。用那个,我猜。

您可能需要考虑安全性——这意味着身份验证和表单验证。RTFM 适用于您使用的任何语言和数据库库,因此您不会对 SQL 注入敞开心扉——对电子邮件也一样。您不想成为垃圾邮件的代理。

于 2010-03-19T00:10:00.203 回答