Visualizzazione dei risultati da 1 a 4 su 4

Discussione: problema con script

  1. #1

    problema con script

    Salve a tutti,
    tempo fa ho inserito nel mio sito un guestbook preso da lukeonweb e l'ho personalizzao un po' togliendo e-mail e titolo di ogni messaggio per renderlo più immediato per chi scriveva quindi nel mio guestbook rimane solo nome e messaggio.
    Ora mi trovo a dover sapere l'indirizzo ip di chi scrive ogni singolo messaggio quindi avevo pensato di salvare in un file di testo l'indirizzo IP il nome e il messaggio e avevo pensato di utilizzare questa porzione di codice che ho trovato su un sito in quanto non sono esperto di asp:

    <%
    dim intModalita
    ' Se intModalita viene inizializzato a 2 si perde il contenuto precedente
    ' Se intModalita viene inizializzato a 8 si accoda il contenuto
    Set Fil=CreateObject("Scripting.FileSystemObject")
    dim strFile
    strFile = server.mapPath("testo.txt")
    Set out=Fil.OpenTextFile(strFile,8,true)

    out.WriteLine(Request.ServerVariables("REMOTE_HOST "))
    response.write "Scrittura eseguita (spero)"
    out.Close
    Set out=Nothing
    Set Fil=Nothing
    %>


    Ho provato ad inserirla in un puno del mio guestbool ma mi da errori tipo si aspetta un ; dopo dim io non so cosa sia dim ma mi sorge il dubbio che siano due linguaggi diversi di asp boh

    QUalcuno mi Può aiutare per favore!!!

    Sotto segue il listato del quest book tra le due faccine sotto c'è il pezzo che ho inserito io (praticamente l'ho messo quando inserisce il nome e il mess nel record salva i dati anche sul file di testo)
    Un grazie
    Mik

    %@LANGUAGE = JScript%>
    <%
    /*
    Autore: Luca Ruggiero - http://www.lukeonweb.net
    Fonte: freeAsp.it - http://freeasp.html.it
    */

    // ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----

    // QUESTA E' LA PASSWORD DI AMMINISTRATORE PER ELIMINARE MESSAGGI INDESIDERATI... CAMBIALAAAAAAAAAAAAAAA :-)
    var admin_password = "xxxx";

    // ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----


    /*
    ASPETTI DELLA CONFIGURAZIONE DELL'APPLICAZIONE NON CONTEMPLATI NEI SINGOLI PASSAGGI DI CODICE

    Pur trattandosi di un semplice Guestbook, questo singolo file consente di effettare
    tutte le operazioni possibili. A tal proposito è necessario puntualizzare alcune cose:

    1. E' importante, qualora dovessi decidere di rinominare questo file,
    modificare tutti i punti in cui si fa riferimento al file guestbook.asp
    sostituendo col nome del file che hai utilizzato per la rinomina.

    2. La grafica è personalizzabile in tutti i minimi particolari,
    ma è importante non confondere alcuna condizione del codice Asp
    evitando che generino errori.

    Gli altri punti cardine dell'applicazione sono contemplati seguendo i vari passi del codice.
    */

    // ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----

    Response.Buffer = true;

    // APRO LA CONNESSIONE VERSO IL DATABASE
    // SE SUL TUO SERVER HAI NECESSITA' DI SPOSTARE IL DATABASE IN UNA CARTELLA DI SISTEMA DEDICATA
    // DEVI MODIFICARE IL PERCORSO NELLA PORZIONE DI CODICE Server.MapPath("percorso/guestbook.mdb")
    var connessione = new ActiveXObject("ADODB.Connection");
    var stringa = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("guestbook.mdb");
    connessione.Open(stringa);

    // UTILIZZEREMO UN SOLO FILE PER ESEGUIRE TUTTE LE OPERAZIONI POSSIBILI
    // INSERIMENTO DEI MESSAGGI, VISUALIZZAZIONE DEI MESSAGGI, CANCELLAZIONE DI MESSAGGI DA PARTE DELL'AMMINISTRATORE, ECC...
    // QUINDI DICHIARO UNA VARIABILE QUERYSTRING PER OTTENERE RISULTATI DIVERSI A SECONDA DEL LORO VALORE
    var azione = new String(Request.QueryString("azione"));

    // CONTO I MESSAGGI PREDENTI SUL DATABASE
    var conta = connessione.Execute("SELECT COUNT(*) AS id FROM messaggi");

    // EFFETTUO LA PAGINAZIONE PER MOSTRARE SOLO UN CERTO NUMERO DI MESSAGGI A VIDEO
    // IN QUESTO CASO 10
    var quanti = 10;
    var Mostra = new ActiveXObject("ADODB.Recordset");
    Mostra.Open("SELECT * FROM messaggi ORDER BY id DESC",connessione,1);
    var pagina = parseInt(Request.QueryString("pagina"));
    if (isNaN(pagina) || pagina < 1) pagina = 1;
    if (!Mostra.EOF)
    {
    Mostra.PageSize = quanti;
    Mostra.AbsolutePage = pagina;
    }
    var i = 0;

    // IMPOSTO IL COLORE DI SFONDO DELLE CELLE CHE CONTENGONO I MESSAGGI
    var colore = 0;
    %>
    <html>
    <head>
    <title>Guestbook</title>

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
    <!--
    body {
    background-color: #ffa500;
    }
    -->
    </style></head>
    <body>

    <h2 align="center">[img]/immagini/bacheca.jpg[/img]</h2>

    <table class="MODULO" width="500" align="center" cellpadding="3" cellspacing="0">
    <form name="guestbook" method="post" action="default.asp?azione=Inserisci">
    <tr>
    <td width="150">Nome</td>
    <td width="350"><input type="text" name="nome" maxlength="50" style="width: 100%; background-color: #FFCC00; layer-background-color: #FFCC00; border: 1px none #000000;"></td>
    </tr>
    <tr>
    <td colspan="2">Messaggio</td>
    </tr>
    <tr>
    <td colspan="2"><textarea name="messaggio" style="width: 100%; height: 100px; background-color: #FFCC00; layer-background-color: #FFCC00; border: 1px none #000000;"></textarea></td>
    </tr>
    <tr>
    <td colspan="2" align="right"><input type="submit" value="Invia "></td>
    </tr>
    </form>
    </table>

    <p align="center">Ci sono <%=conta("id")%> messaggi</p>

    <%
    if (azione == "undefined")
    {
    %>
    <table width="500" align="center" cellpadding="3" cellspacing="0">
    <%
    // MOSTRO I MESSAGGI A VIDEO
    if (Mostra.EOF)
    {
    Response.Write("

    Non ci sono messaggi...</p>");
    }
    else while (!Mostra.EOF && i<quanti)
    {
    %>
    <tr>
    <td bgcolor="#<%colore%2 == 0 ? Response.Write("FFFFFF") : Response.Write("EEEEEE")%>" style="border-bottom: Dashed 1px #CCCCCC; background-color: #FFCC00; layer-background-color: #FFCC00; border: 1px none #000000;">
    <font color="#800000"><%=Mostra("titolo")%></font><%Session("amministratore") == "OK" ? Response.Write(" (<a href=\"default.asp?azione=Cancella&id=" + Mostra("id") + "\">cancella</a>") : Response.Write("")%>

    Autore: <%=Mostra("nome")%></a>

    Data: <%=Mostra("data")%> ore <%=Mostra("ora")%>


    <%=Mostra("messaggio")%> </td>
    </tr>
    <%
    i++;
    colore++;
    Mostra.MoveNext();
    }
    %>
    </table>
    <%
    }
    else if (azione == "Inserisci")
    {
    // RECUPERO I DATI DAL MODULO PER EFFETTUARE LA REGISTRAZIONE
    var nome = new String(Request.Form("nome"));
    var messaggio = new String(Request.Form("messaggio"));
    // ESPRESSIONE REGOLARE PER LA VERIFICA DELL'INDIRIZZO EMAIL
    // CREO LA DATA
    var oggi = new Date();
    var data = oggi.getDate() + "/" + (oggi.getMonth() + 1) + "/" + oggi.getFullYear();
    var ora = oggi.getHours() + ":" + oggi.getMinutes();
    // VALIDAZIONE DEI DATI INSERITI DALL'UTENTE
    var errore = "default.asp?azione=errore&codice=";
    if (nome == "" || nome == "undefined" || nome.charAt(0) == " ")
    {
    Response.Redirect(errore + "1");
    }
    else if (messaggio == "" || messaggio == "undefined" || messaggio.charAt(0) == " ")
    {
    Response.Redirect(errore + "4");
    }
    else
    {
    var r_messaggio = messaggio.replace(/</g, "<");
    var rr_messaggio = r_messaggio.replace(/>/g, ">");
    var rrr_messaggio = rr_messaggio.replace(/&/g, "&");
    var rrrr_messaggio = rrr_messaggio.replace(/\n/g, "
    ");
    // CASO IN CUI TUTTE LE CONDIZIONI SONO STATE SODDISFATTE
    // QUINDI PROCEDO CON LA REGISTRAZIONE DEL MESSAGGIO
    var recordset = new ActiveXObject("ADODB.Recordset");
    recordset.Open("messaggi",connessione,3,3);
    recordset.AddNew();
    recordset("nome") = nome;
    recordset("messaggio") = rrrr_messaggio;
    recordset("data") = data;
    recordset("ora") = ora;
    recordset.Update();
    recordset.Close();

    Set Fil=CreateObject("Scripting.FileSystemObject");
    dim strFile;
    strFile = server.mapPath("testo.txt");
    Set out=Fil.OpenTextFile(strFile,8,true);
    out.WriteLine(Request.ServerVariables("REMOTE_HOST "));
    out.WriteLine(nome);
    out.WriteLine(messaggio);
    out.WriteLine("");
    response.write "Scrittura eseguita (spero)";
    out.Close;
    Set out=Nothing;
    Set Fil=Nothing;

    Response.Redirect("default.asp");
    }
    }
    else if (azione == "errore")
    {
    // GESTIONE DEI MESSAGGI DI ERRORE
    var codice = parseInt(Request.QueryString("codice"));
    var correggi = "<p align=\"center\"><input type=\"button\" value=\"Correggi\" onClick=\"window.history.back()\">";
    if (codice == "1")
    {
    Response.Write("<p class=\"ERRORE\">Inserisci il tuo nome per favore</p>" + correggi);
    }
    else if (codice == "2")
    {
    Response.Write("<p class=\"ERRORE\">Inserisci la tua email per favore</p>" + correggi);
    }
    else if (codice == "2")
    {
    Response.Write("<p class=\"ERRORE\">Inserisci la tua email per favore</p>" + correggi);
    }
    else if (codice == "3")
    {
    Response.Write("<p class=\"ERRORE\">Inserisci il titolo del messaggio favore</p>" + correggi);
    }
    else if (codice == "4")
    {
    Response.Write("<p class=\"ERRORE\">Inserisci il corpo del messaggio favore</p>" + correggi);
    }
    else
    {
    Response.Redirect("default.asp");
    }
    }
    else if (azione == "Login")
    {
    // LOGIN PER L'AMMINISTRATORE
    var password = new String(Request.Form("password"));
    if (password == admin_password)
    {
    Session("amministratore") = "OK";
    }
    Response.Redirect("default.asp");
    }
    else if (azione == "Logout")
    {
    // LOGOUT PER L'AMMINISTRATORE
    Session.Abandon();
    Response.Redirect("default.asp");
    }
    else if (azione == "Cancella")
    {
    // EFFETTUO LA CANCELLAZIONE DEL MESSAGGIO (SOLO SE AUTENTICATO)
    if (Session("amministratore") != null)
    {
    var id = parseInt(Request.QueryString("id"));
    connessione.Execute("DELETE * FROM messaggi WHERE id LIKE '" + id + "'");
    }
    Response.Redirect("default.asp");
    }
    else
    {
    Response.Redirect("default.asp");
    }
    %>





    <p align="center">

    <%
    // CREO LA BARRA DI NAVIGAZIONE PER VISITARE "TUTTE LE PAGINE" CONTENENTI I VECCHI MESSAGGI
    for (var x=0; x<Mostra.PageCount; x++)
    {
    if (pagina == (x + 1))
    {
    Response.Write("[" + (x + 1) + "] ");
    }
    else
    {
    Response.Write("[<a href=\"default.asp?pagina=" + (x + 1) + "\">" + (x + 1) + "</a>] ");
    }
    }
    %>
    </p>





    <p align="center">
    <form name="login" method="post" action="default.asp?azione=<%Session("amministrato re") == null ? Response.Write("Login") : Response.Write("Logout")%>">
    <%if (Session("amministratore") == null) {%>
    <input type="password" name="password">
    <%}%>
    <input type="submit" value="<%Session("amministratore") == null ? Response.Write("Login") : Response.Write("Logout")%>">
    </form>
    </p>

    </body>
    </html>

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Il tuo script è in JAVASCRIPT e non in VBSCRIPT pertanto devi utilizzare la sintassi corretta.
    Il tuo guestbook è in js mentre lo script che hai trovato è in VB.
    Inoltre l'indirizzo IP lo recuperi con:

    out.WriteLine(Request.ServerVariables("REMOTE_ADDR "))

    Roby

  3. #3
    io personalmente aggiungerei un campo nella tabella dei messaggi in cui memorizzare l'IP e non lo farei su un file di testo staccato! per motivi di comodità e velocità...

  4. #4
    Qualcuno mi direbbe come si aprono i file di testo e come ci si può scrivere non sovrascrivendoli in Js???
    Grazie Mik

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.