Sto solo imparando a usare cgi nei file html. Ho letto un sacco di cose sul web, ma la maggior parte riguarda gli alberi e non abbastanza la foresta. Sono uno studente discendente e ho difficoltà a capire cosa sta succedendo con cgi, apache e html. Al momento sto usando python come linguaggio di scripting cgi, ma se mi piacerebbe rispondere usando perl, posso gestirlo. Ecco un MWE per un test fallito.
HTML: (il file è getname.html)
<html>
<head></head>
<body>
<form method="POST" action="./test.py">
<p>Your First Name: <input type="text" name="firstname">
<p>Click here to submit form: <input type="submit" value="Submit">
<input type="hidden" name="session" value="1f9a2">
</form>
</body>
</html>
Python: (il file è test.py)
#!/usr/bin/python
import sys, os, os.path, shutil, string, fileinput
import cgi, cgitb
print "Content-type: text/html\n"
form = cgi.FieldStorage()
f = open('./testOutput', 'w')
if form.has_key("firstname"):
f.write(form["firstname"])
else:
f.write("Failure")
f.close()
Quindi, sembra come quello che sta succedendo è che le informazioni che l'utente inserisce nel modulo sono messe in una variabile chiamata 'firstname' (in realtà è una coppia chiave-valore messa in un hash come cosa nel linguaggio di scripting.In python è un dizionario). Questa variabile viene quindi inviata come input allo script cgi (test.py) e lo script viene eseguito.
Ma non è quello che sta succedendo. Quando premo il pulsante "Invia" nel file html, lo script test.py viene visualizzato nel browser e lo script non viene eseguito. A proposito, il motivo per cui ho scritto lo script su un file è che posso vedere se viene eseguito. Quando eseguo test.py dalla riga di comando, funziona perfettamente.
Il fatto che test.py sia visualizzato nel mio browser indica, penso, che apache non è in esecuzione o non è configurato correttamente o presenta problemi di autorizzazione. Per quanto posso vedere, nessuna di queste cose è vera, ma potrei sbagliarmi. Quindi ecco le mie domande: 1) perché l'apache è coinvolto? È necessario inviare le variabili raccolte nel modulo html allo script? Se è così, perché? So che html è solo un linguaggio di markup, ma ho pensato che il tag 'form' avesse la possibilità di inviare una variabile a uno script ed eseguire lo script. 2) C'è un modo per testare una configurazione di Apache? È possibile che apache utilizzi 127.0.0.1 come 'ServerName' (cioè ServerName 127.0.0.1:80 nel mio file httpd.conf)
Fondamentalmente, voglio solo scrivere script cgi per alcune pagine web che sto codificando a mano e testarle sul mio laptop di casa. Non sembro sapere come farlo e potrei usare un po 'di aiuto. TIA.