Создание cgi.FieldStorage Store пользовательских входов? - PullRequest
1 голос
/ 15 апреля 2011

Я написал простой Python CGI-скрипт, но в нем есть ошибка:

#!/usr/bin/python2.7

import cgi,sys,random

sys.stderr = sys.stdout

num1 = random.randrange(1,11)
num2 = random.randrange(1,11)
answer = num1 + num2

print("Content-type: text/html\n")
print("<code>%d + %d :</code>") % (num1,num2)
print("""
<form method=POST action="">
<hr>
<th align=right>
<code><b>Answer:</b></code>
<input type=text name="answer">
<tr>""")

form = cgi.FieldStorage()

try:
    if form["answer"].value == str(answer):
        print "<br><b>Good</b>"
    else:
        print "<br><b>Wrong</b>"

except KeyError:
    pass

Числа восстанавливаются при каждом выполнении этого кода, и он не может сравнить вводимые пользователем данные с ответом, поскольку cgi.FieldStorage делаетне сохранять эти входные данные:

enter image description here

Программисты PHP используют "session_start ()", чтобы делать то, что я хочу сделать:

<?php
//Start the session so we can store what the code actually is.
session_start();
$text = rand(1,11);
$_SESSION["answer"] = $answer;
.......
?>

Что насчет Python?Как мы можем это сделать?

Редактировать: Я действительно не уверен, что это сеансы или нет .. Мне просто нужен способ сохранить то, что пользователь ввел, чтобы я мог сравнить его ответ с правильнымответить

1 Ответ

0 голосов
/ 29 июня 2011

У вас есть несколько вариантов. Одним из них является мензурка . Это промежуточное программное обеспечение WSGI, предназначенное для кэширования и хранения сеансов. Не уверен, как оно интегрируется с обычным CGI-приложением, но не должно быть слишком сложным. Это будет близко к PHP session_start() и хранению вещей в $_SESSION. В Beaker есть несколько способов хранения информации о сеансе (cookie с данными сеанса, готовка с идентификатором сеанса и т. Д. И т. Д.)

Другой способ, которым я могу придумать, - это иметь скрытый элемент <input> с исходными числами. Это будет представлено вместе с формой и доступно в form. Если честно, это плохой способ делать вещи. Он открыт для атаки пользователя и поэтому не является безопасным. Я знаю, что это всего лишь тестовое приложение, но вполне может начать с правой ноги :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...