#javascript #python #php #html
Вопрос:
Привет, я пытаюсь написать cgi-скрипт на python, который получает значения из полей ввода html и печатает соответственно. Я пытался использовать chmod, чтобы сделать python выполнимым, но почему-то это не работает, и я получаю внутреннюю ошибку сервера при запросе x.send. Это должно быть сделано таким образом, чтобы не искать альтернатив. Мой код выглядит так.
HTML:
lt;h1gt;Loginlt;/h1gt; lt;labelgt;Usernamelt;/labelgt; lt;input type="text" id="lg_user" name="lg_uid"gt; lt;labelgt;Passwordlt;/labelgt; lt;input type="password" id="lg_pwd" name="lg_pass"gt; lt;br/gt; lt;button type="submit" id="login_btn" onclick="loggingin()"gt;Loginlt;/buttongt; lt;div id="lg_test"gt;Loginlt;/divgt;
язык JavaScript:
function loggingin(){ var u=document.getElementById("lg_uid"); var p=document.getElementById("lg_pass"); try{ x=new XMLHttpRequest(); x.addEventListener("readystatechange", stateChange, false); x.open("POST","../cgi-bin/checkpass.py",true); x.send("lg_uid=" u "amp;lg_pass=" p); } catch(exception){ alert("Request failed"); } } function stateChange(){ if (x.readyState==4 amp;amp; x.status==200) { sessionStorage.logstats if(sessionStorage.logstats==null || sessionStorage.logstats=="loggedOut") { sessionStorage.logstats="loggedIn"; checkState(); //showPage("home_section"); //location.reload(); } else if(sessionStorage.logstats=="loggedIn"){ sessionStorage.logstats="loggedOut"; checkState(); //showPage("home_section"); //location.reload(); } document.getElementById("lg_test"),innerHTML=x.responseText; } }
Питон:
#!/usr/bin/python import cgi import cgitb import csv form = cgi.FieldStorage() username = form.getvalue("lg_uid") password = form.getvalue("lg_pass") found=0 with open('users.csv') as csvfile: spamreader = csv.reader(csvfile, delimiter=',') for row in spamreader: if row[0] == username or password ==row[1]: found=1 print ("Content-Type: text/htmlnn") if found == 1: print ("lt;pgt;Your Password Matcheslt;/pgt;") if username == "": print("lt;pgt;No usename providedlt;/pgt;") else: print ("lt;pgt;Wrong Usename or Passwordlt;/pgt;")
Комментарии:
1. Работает ли он с более простым cgi-скриптом, например, который возвращает только статический HTML без какой-либо логики? Какой веб-сервер вы используете? Есть ли какие-либо журналы ошибок?
2. статический HTML также не работает. Не уверен насчет сервера. Журнал ошибок содержит 500 внутренних ошибок сервера в строке x.send() JavaScript
3. если это поможет, когда я изменю расширение на .py с .cgi, весь скрипт python будет возвращен в виде текста ответа
4. @Argha — Нам нужна более подробная информация о вашем сервере и конфигурации вашего сервера. Похоже, это проблема с сервером, а не с HTML или Python
5. Да, я думаю, что вы правы, но я не посвящен в детали сервера, но спасибо, зная, что это проблема на стороне сервера, это очень помогает