• User

    Parse Error

    salve vorrei un aiuto per uno script di un guestbook che ho reperito in rete ma quando lo provo va in parse error, non trovo il problema.
    La riga incriminata è quella in rosso e lo script stà i tag body:

    <?php
    // modificate il nome di questo file solo se lo avete salvato con un nome diverso
    include ("config.inc.php");
    // Includo la connessione al database
    require('config.php');
    or die( "Impossibile collegarsi al database");
    mysql_select_db( "$db_name") or die( "Impossibile selezionare il database");
    $numresults = mysql_query("SELECT name, date, email, comment FROM guestbook");
    $numrows = mysql_num_rows($numresults)
    or die ("query 1 failed");

    if (empty($offset)) {
    $offset=0;
    }
    $query = "SELECT name, date, email, comment FROM guestbook order by date DESC limit $offset,$limit";
    $result = mysql_query ($query)
    or die ("query 2 failed");

    while ($row = mysql_fetch_row ($result))
    {
    for ($i = 0; $i < mysql_num_fields ($result); $i++)
    {
    if ($i > 0)
    print ("<br>");
    if ($i == 0){
    print "<b>Nome: </b>";
    }
    else if ($i == 1){
    print "<b>Data: </b>";
    }
    else if ($i == 2){
    print "<b>Email: </b>";
    }
    else{
    print "<b>Commento:</b><br>";
    }

    print ($row*); 
         
    } 
    

    print "<br><br><center><hr></center>";
    print ("<P>");
    }
    if ($offset >= 3) {
    $prevoffset = $offset - $limit;
    print "<a h..f="Guestbook\guest.php?offset=$prevoffset">PREV</a> \n";
    }
    $pages=intval($numrows/$limit);
    if ($pages < ($numrows/$limit)){
    $pages=($pages + 1);
    }
    for ($i = 1; $i <= $pages; $i++) {
    $newoffset = $limit*($i-1);
    if ($newoffset == $offset) {
    print "$i \n";
    } else {
    print "<a h..f="Guestbook\guest.php?offset=$newoffset">$i</a> \n";
    }
    }
    // visualizza il link alla pagina successiva solo se non è l'ultima pagina
    if (! ( ($offset/$limit) == ($pages - 1) ) && ($pages != 1) ) {
    $newoffset = $offset+$limit;
    print "<a h..f="Guestbook\guest.php?offset=$newoffset">NEXT</a><p>\n";
    }
    ?>

    Se avete la possibilità di controllare tutto lo script se ci sono altri errori, visto che sono veramente negato con il php, grazie.


  • User Attivo

    Ciao arkom,
    non è detto che l'errore sia prorpio ì, spesso lo trovi anche nella riga precedente...

    Io vedo a mio avviso questo:

    **require('config.php');
    or die( "Impossibile collegarsi al database"); **

    che scriverei come:

    **require('config.php') or die( "Impossibile collegarsi al database");

    **Nelle righe da te evidenziate non vedo alcun errore formale...
    Prova lacorrezione che ti ho indicato e facci sapere.
    :ciauz:
    **
    **


  • User

    Ciao Ceccus, forse hai ragione, ma adesso noto anche un'altra curiosità nel codice ossia questo:

    include ("config.inc.php"); <= qua abbiamo un apice doppio
    // Includo la connessione al database
    require('config.php'); <= qua invece singoli apici, oltre al punto e virgola che mi hai segnalato
    or die( "Impossibile collegarsi al database");
    mysql_select_db( "$db_name") or die( "Impossibile selezionare il database");

    Potrebbe essere questo l'errore? Tieni conto che require('config.php'); e già incluso in altre pagine e funzionano benissimo per le fasi di registrazione e login. Questa stringa non faceva parte dello script iniziale del tutorial, ma l'ho sostituito per comodità con l'altro script che era più lungo e prevedeva il collegamento al DB che era questo:

    // connessione al database
    // sostituite localhost con il nome dell'host dove risiede il vostro database
    mysql_pconnect( "localhost", "$username", "$password")
    or die( "Impossibile collegarsi al database");

    Per adesso ti ringrazio


  • User Attivo

    No, in questo caso apice doppio o singolo non fa alcuna differenza.

    Prova togliendo il punto e virgola e posta qui l'eventuale errore...


  • User

    per adesso grazie Ceccus, provo e ti faccio sapere.


  • User

    Olla Ceccus ho provato ma forse ci sono altri problemi. Ho prelevato gli script originari per testarli in locale e mi dà un Undefined Variable on line 6 (segnalato in rosso) nella pagina guestbook.php ecco il codice:
    (NB:se modifico qualcosa nello script poi mi da un errore anche nella parte verde dello script)

    <?php
    // modificate il nome di questo file solo se lo avete salvato con un nome diverso
    include ("config.inc.php");
    // controlliamo che la form sia stata riempita prima di inviarla
    if (($name == "") AND ($email == "") AND ($comments == "")):
    // Questo è il messaggio di errore visualizzato...
    $error1 = "<font face='Arial' color='Red'><STRONG>E' necessario inserire tutti i dati richiesti:</STRONG></font><br><br>";

    include($PostPage); 
    

    else:
    if ($allowHTML == 0):
    $name = ereg_replace("<","<",$name);
    $name = ereg_replace(">",">",$name);
    $email = ereg_replace("<","<",$email);
    $email = ereg_replace(">",">",$email);
    $url = ereg_replace("<","<",$url);
    $url = ereg_replace(">",">",$url);
    $urltitle = ereg_replace("<","<",$urltitle);
    $urltitle = ereg_replace(">",">",$urltitle);
    $referral = ereg_replace("<","<",$referral);
    $referral = ereg_replace(">",">",$referral);
    $comments = ereg_replace("<","<",$comments);
    $comments = ereg_replace(">",">",$comments);
    endif;
    // connessione al database
    // sostituite localhost con il nome dell'host dove risiede il vostro database
    $mysql_link = mysql_pconnect( "localhost", "$username", "$password")
    or die( "Impossibile collegarsi al server");
    mysql_select_db( "$db_name") or die( "Impossibile selezionare il database");
    $insert = "INSERT INTO guestbook(name, date, email, comment) VALUES('$name', SYSDATE(), '$email', '$comments')";
    $mysql_insert = mysql_query($insert, $mysql_link)
    or die("Avvisate $my_email che lo script non ha inserito questi dati nel database <BR><BR>$name,<br>$email,<br>$comments<br><br>$insert");
    // Invia la mail di notifica per il nuovo messaggio inserito nel guestbook
    if ($notify == 1):
    $comments = ereg_replace("<BR>","\n",$comments);
    mail
    (
    "$my_email",
    "Nuovo messaggio nel guestbook",
    "Nome : $name
    Email : $email
    Note:
    $comments\n
    ",
    "Inviato Da: $email\n"
    );
    endif;
    // controlla che non siano presenti messaggi uguali
    $name_chk = $name;
    $email_chk = $email;
    $comments_chk = $comments;
    include($gbPage);
    endif;
    ?>


  • ModSenior

    Ciao arkom,

    Questo script funziona solo con le register_globals ON da quello che vedo, e la maggior parte degli hosting ormai le ha impostate OFF. Qui trovi qualche informazione utile sulla direttiva register_globals.
    Gli errori devi sempre incollarli cosi come sono, altrimenti non possiamo capire niente, e per postare il codice php usare i bbcode in modo da essere più leggibili :).


  • User Attivo

    ...e occhio alla linea 6, che termina con i due punti...


  • User

    Ok TheDarkita, non mi conviene allora questo script visto che ci sono anche problemi di sicurezza. Niente register_globals su on, troppo vulnerabile da quello che ho capito.
    Ma per capirci qualcosa come si riconosce uno script che ha bisogno di abilitare o meno il register_globals?

    Comunque cerco un'altro script più sicuro per il guesbook.
    [html]
    Ah poi non sapevo del bbcode ( sapevo manco cosa era !!!:bho:) ma adesso o visto la modalità avanzato e per la prossima volta provvedo come qua :wink3:
    [/html]

    Grazie anche a Ceccus!


  • ModSenior

    Si riconosce da come vengono richiamate le variabili globali($_POST, $_GET, $_SESSION).