Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过CGI从sqlite3检索数据时出错_Python_Sqlite_Cgi_Cgihttpserver - Fatal编程技术网

Python 通过CGI从sqlite3检索数据时出错

Python 通过CGI从sqlite3检索数据时出错,python,sqlite,cgi,cgihttpserver,Python,Sqlite,Cgi,Cgihttpserver,我试图构建一个非常简单的登录页面,它要求用户输入他的注册号,用户名和密码。当他按下提交按钮时。我试图检查它是现有用户还是新用户,并相应地显示一条消息 我的文件夹层次结构如下 prodicus@Acer:~/Downloads/souvik_refactoring$ tree . ├── cgi-bin │   ├── creating_user_base_table.py │   ├── user_base.db │   └── usr_check.py ├── index.html └── k

我试图构建一个非常简单的登录页面,它要求用户输入他的
注册号
用户名
密码
。当他按下提交按钮时。我试图检查它是现有用户还是新用户,并相应地显示一条消息

我的文件夹层次结构如下

prodicus@Acer:~/Downloads/souvik_refactoring$ tree
.
├── cgi-bin
│   ├── creating_user_base_table.py
│   ├── user_base.db
│   └── usr_check.py
├── index.html
└── keyCheck.py

1 directory, 5 files
我尝试过的:

对于
index.html

<!DOCTYPE html>
<html>
<head>
    <title>Login page</title>
</head>
<body>
    <div style = "text-align : center ; ">
        <h1>Login page</h1>
        <form action="/cgi-bin/usr_check.py" method="get"> 
            Registration number : <input type="number" name="register_no" min="1" max="2000000000">
            <br><br>
            Username : <input type="text" name="username">
            <br><br>
            Password : <input type="password" name = "password">
            <br><br>
            <input type="submit" value = "Login">
        </form>
    </div>
</body>
</html>
最后是
usr\u check.py

#!/usr/bin/env python3.4

import sqlite3
import os

db_name = "user_base.db"

if db_name in os.listdir():
    print("removing the user_base.db and creating a fresh copy of it")
    os.system("rm user_base.db")

print("Creating the database")
conn = sqlite3.connect(db_name)
cur = conn.cursor()

user_table = "CREATE TABLE users(reg_no INTEGER PRIMARY KEY, user_name TEXT, pass TEXT)"

new_users = (
    (1081310251, 'admin', 'admin'),
    (1081310234, 'foo', 'admin123')
)

cur.execute(user_table)
print("table created")
cur.executemany('INSERT INTO users VALUES(?, ?, ?)', new_users)
conn.commit()
print("default users created \n\ndisplaying them")

cur.execute('SELECT * FROM users')
print(cur.fetchall())
#/usr/bin/env python3.4

import cgi, cgitb
import os
import sqlite3

cgitb.enable()

form = cgi.FieldStorage()
register_no = form.getvalue('register_no')
username = form.getvalue('username')
passwd = form.getvalue('password')

print("Content-type:text/html\r\n\r\n")
print("<html>")
print("<head>")
print("<h1>Shit gets real here</h1>")
print("</head>")
print("<body>")
print('<div style = "text-align:center ; "')
# print("</div>")
print("")

conn = sqlite3.connect('user_base.db')
cur = conn.cursor()

## now to check whether the entered data is for
## -> new user 
## -> an old user

cur.execute('SELECT user_name FROM users WHERE register_no = ?', (register_no,))
rows = cur.fetchall()
print("<br><br>")
if len(rows) == 0:  
    print("<p>User : <b>", username , "</b> does not exist.</p>")
    cur.execute('INSERT INTO users VALUES(?, ?, ?)', (register_no, username, passwd))
    print("<p>User was created successfully</p>")
    print("Done")

else:
    print("<p>Welcome<b>", username ,"</b>. Good to have you back")
    print("<br><p>Your account details</p>")
    print("<ul>")
    print("<li>Register number : ", register_no, " </li>")
    print("<li>Username " , username, "</li>")
    print("</ul>")
在此之后,我拥有文件权限

prodicus@Acer:~/Downloads/souvik_refactoring$ ll
total 36
drwxrwxr-x  3 prodicus prodicus  4096 Nov  2 08:30 ./
drwxr-xr-x 15 prodicus prodicus 20480 Nov  2 11:29 ../
drwxrwxrwx  2 prodicus prodicus  4096 Nov  2 12:23 cgi-bin/
-rw-rw-r--  1 prodicus prodicus   629 Nov  2 08:38 index.html
-rwxrwxr-x  1 prodicus prodicus   463 Nov  2 08:29 keyCheck.py*


令人惊讶的是,
cgib
没有显示错误。我哪里做错了?从早上起我就一直被这件事弄得头晕目眩

终于找到了问题所在。他犯了一个非常愚蠢的错误!感谢@cas让我参与进来

已经做了一个
#/usr/bin/env python3.4
而不是
#/usr/bin/env python3.4

其次,当脚本
usr\u check.py
试图连接到数据库
user\u base.db

这为我解决了问题

prodicus@Acer:~/Downloads/souvik_refactoring$ ll
total 36
drwxrwxr-x  3 prodicus prodicus  4096 Nov  2 08:30 ./
drwxr-xr-x 15 prodicus prodicus 20480 Nov  2 11:29 ../
drwxrwxrwx  2 prodicus prodicus  4096 Nov  2 12:23 cgi-bin/
-rw-rw-r--  1 prodicus prodicus   629 Nov  2 08:38 index.html
-rwxrwxr-x  1 prodicus prodicus   463 Nov  2 08:29 keyCheck.py*
prodicus@Acer:~/Downloads/souvik_refactoring/cgi-bin$ ll
total 20
drwxrwxrwx 2 prodicus prodicus 4096 Nov  2 12:23 ./
drwxrwxr-x 3 prodicus prodicus 4096 Nov  2 08:30 ../
-rwxrwxrwx 1 prodicus prodicus  710 Nov  1 23:12 creating_user_base_table.py*
-rwxrwxrwx 1 prodicus prodicus 2048 Nov  2 12:23 user_base.db*
-rwxrwxrwx 1 prodicus prodicus 1576 Nov  2 08:26 usr_check.py*