Alessio Cucinotta

Script CGI per regsitro nomi

Questo script CGI permette di inserire delle stringhe di testo in un file per poi leggerle e stamparle a schermo.
È scritto in Python per dimostrare la flessibilità delle CGI, che permetto la scrittura in qualunque linguaggio che supporta input e output

registro.cgi
    #!/usr/bin/python3

    import cgi
    
    // Definiamo le funzioni necessarie per la scrittura e l'ottenimento dei nomi dal file
    def writeName(name):
        with open('/var/www/html/list.txt', 'a') as file:
            file.write(name + "\n")
    
    def getNames():
        names = []
        with open('/var/www/html/list.txt', 'r') as file:
            for line in file:
                names.append(line.strip())
        return names
    
    // Otteniamo il valore del nome inserito nel form
    form = cgi.FieldStorage()
    name = form.getvalue('name', '')
    
    // Scriviamo il nome nel file
    if name:
        writeName(name)
    
    // Dichiariamo una strigna contentente tutti i nomi del file
    nameList = ""
    names = getNames()
    for name in names:
        nameList += f"<li>{name}</li>"
    
    print("Content-type: text/html")
    print()
    
    // Stampiamo la pagina HTML di output includendo la lista {nameList}
    print(f"""
    <!DOCTYPE html>
    <html>
    <head>
        <title>Registro nomi</title>
    </head>
    <body>
        <h1>Registro nomi</h1>
        <form method="post" action="registro.cgi">
            <label for="name">Inserisci il nome:</label>
            <input type="text" id="name" name="name">
            <input type="submit" value="Save">
        </form>
        <hr>
        <h2>Nomi nel file:</h2>
        <ul>
            {nameList}
        </ul>
    </body>
    </html>
    """)