So I have created a website, when the user tries to fill out the login form (username and password), the following error message is displayed:
Error response
Error code: 501
Message: Unsupported method ('POST').
Error code explanation: HTTPStatus.NOT_IMPLEMENTED - Server does not support this operation.
For the server im using Python 3 http.server. To start the server i have a batch file containing the following code:
python -m http.server 80
I'm looking for a way to receive the login credentials the user submitted, and store them in a text file (.txt).
After doing some research I got the impression I need to create a PHP script, i have no idea how to do this. here is my attempt at it:
<?php
$username = htmlspecialchars($_POST['username']);
$password = htmlspecialchars($_POST['password']);
echo $username, ' ', $password;
?>
Thank you @MonkeyZeus, I managed to solve the problem by making a few changes to your code.
import socketserver
import http.server
import logging
import cgi
PORT = 80
class ServerHandler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
logging.error(self.headers)
http.server.SimpleHTTPRequestHandler.do_GET(self)
def do_POST(self):
logging.error(self.headers)
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD':'POST',
'CONTENT_TYPE':self.headers['Content-Type'],
})
for item in form.list:
logging.error(item)
http.server.SimpleHTTPRequestHandler.do_GET(self)
with open("data.txt", "w") as file:
for key in form.keys():
file.write(str(form.getvalue(str(key))) + ",")
Handler = ServerHandler
httpd = socketserver.TCPServer(("", PORT), Handler)
print("serving at port", PORT)
httpd.serve_forever()
When the post request is received, a text file called "data" is created. A for loop is then used to iterate through the keys (source) and write there values to the file.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With