Guestbook - non funziona dopo upgrade di PHP

Maxpcc

Nuovo Utente
9 Feb 2020
5
0
1
Buongiorno, premetto che non metto mano a php da tanti anni, e non sono mai stato programmatore, ma per esigenze di mantenere viva una pagina molto apprezzata ogni tanto sono costretto a fare una immersione in un mondo non mio.

Avevo un codice PHP molto semplice per fare un guestbook, con MySQL; sono dovuto passare ad una versione di PHP più recente (per ora una 5.x, ma più avanti vorrei passare ad una 7.x appena risolvo altri problemi) e il vecchio guestbook che avevo non funziona più. Posto il codice e metto l'indirizzo a cui si può accedere all'attuale GB. Ovviamente accetto anche nuovi script, da integrare nella nuova pagina che sto facendo, che siano altrettanto facili. Grazie dell'aiuto e della comprensione.


PHP:
<h1 align="center"><img border="0" src="immagini/guestbook.gif" width="300" height="75"></h1>
<font face="Verdana" size="3"><b>Ecco chi ci ha visitato. Se vuoi lasciare anche tu la tua firma, <a href="tuafirma.php?go=sign"><font color=red>clicca qui</font></a>.</b></font>
<hr>
<?php
/*
 * requires a mysql table:-
 * CREATE TABLE guestbook (id INT (50) UNSIGNED AUTO_INCREMENT, name VARCHAR (255) , email VARCHAR (150) , url VARCHAR (255) , came_from VARCHAR (255) , comment TEXT , date VARCHAR (100) , INDEX (id))
 * create table guestbook_bans(ip varchar(15), time int(15))
 *
 * change the below varibles to suit your needs, you might also want to read through the
 * script and change some error message and html to your own liking
 *
 * if you need some help, state your problem here -> http://forums.plebian.com/viewforum.php?forum=12
 */
$colour1="#84beff"; // colour of first cell
$colour2="#649eff"; // colour of second cell
$delete_pass="MY_DB_DEl_PASSWORD"; // password to delete guestbook entries
$allow_tags="<b>,<a>,<i>,<li>"; // html tags to allow in the message
$num_msg=30; // number of entries to display per page
$a_time=30; // number of seconds before someone signing the book can sign again (stop spam and multiple signings)
$a=mysql_connect("MY_DB_IP","MY_DB_USER","MY_DB_PASSWORD") or die ("unable to connect to mysql");
$b=mysql_select_db("MY_DB_NAME",$a);
/******************************************
INSERISCO I DATI
*******************************************/
if($g_name && $comment)
{
    if(strlen($g_name)>255) die("Non puoi usare piu' di 255 caratteri per il tuo nome");
    if(strlen($g_email)>150) die("Non puoi usare piu' di 150 caratteri per la tua e-mail");
    if(strlen($g_url)>255) die("Non puoi usare piu' di 255 caratteri per l'indirizzo internet");
    if(strlen($came_from)>255) die("Non puoi usare piu' di 255 caratteri per la città");
    if(strlen($comment)>64300) die("Messaggio troppo lungo ........");
    $g_name=strip_tags($g_name);$g_email=strip_tags($g_email);$g_url=strip_tags($g_url);$came_from=strip_tags($came_from);$comment=strip_tags($comment,$allow_tags);
    $g_name=addslashes($g_name);$g_email=addslashes($g_email);$g_url=addslashes($g_url);$came_from=addslashes($came_from);$comment=addslashes($comment);
    $date=gmdate("j M Y H:i T");
    $c=mysql_query("select time from guestbook_bans where ip='$REMOTE_ADDR'");
    $dp=mysql_fetch_object($c);
    if(is_object($dp))
    {
        $nk=time()-$dp->time;
        if($nk<=$a_time) die("Per evitare accessi multipli devi aspettare <b>$nk</b> secondi prima di firmare di nuovo. Questo nel caso avessi premuto il pulsante due volte. Il tuo messaggio e' stato aggiunto.");
    }
    if(mysql_query("insert into guestbook (name,email,url,came_from,comment,date) values ('$g_name','$g_email','$g_url','$came_from','$comment','$date')"))
    {
        mysql_query("delete from guestbook_bans where ip='$REMOTE_ADDR'");
        $t=time();mysql_query("insert into guestbook_bans values('$REMOTE_ADDR','$t')");
        echo "<h3>Grazie !</h3><p>";
    }
    else
    {
        echo "C'e' stato un problema nell'aggiungere il tuo commento<p>";
    }
}
/******************************************
SE SONO IN FASE DI CANCELLAZIONE
*******************************************/
if($d)
{
    if($password==$delete_pass && ereg("[0-9]+",$d))
    {
        mysql_query("delete from guestbook where id='$d'");
        echo "<h3>Il commento e' stato cancellato</h3><p>";
    }
    else
    {
        die("Inserisci la password<br> <form method=post action=$PHP_SELF?l=$l><input type=hidden name=d value=$d><input type=password name=password> <input type=submit value=delete></form>");
    }
}
/******************************************
SE SONO IN FASE DI INSERIMENTO DATI-FORM
*******************************************/
if($go=="sign")
{
    echo "<font color=red>*</font> Campi obbligatori<br>
    <form method=post action=$PHP_SELF>
    <table>
    <tr>
    <td><font color=red>*</font>Nome</td>
    <td><input type=text name=g_name maxlength=255 size=34></td>
    </tr>
    <tr>
    <td>E-mail</td>
    <td><input type=text name=g_email maxlength=150 size=34></td>
    </tr>
    <tr>
    <td>Citta'</td>
    <td><input type=text name=came_from maxlength=255 size=34></td>
    </tr>
    <tr>
    <td>Indirizzo internet</td>
    <td><input type=text name=g_url maxlength=255 size=34></td>
    </tr>
    <tr>
    <td valign=top><font color=red>*</font>Commento</td>
    <td colspan=3><textarea name=comment cols=90 rows=5></textarea></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><input type=submit value=Inserisci></td>
    </tr>
    </table>
    </form>";
}
/******************************************
ALTRIMENTI visualizzo il guestbook
*******************************************/
else
{
    if(!ereg("[0-9]+",$l)) $l=0; else $l=addslashes($l);
    $c=mysql_query("select * from guestbook order by id desc limit $l,$num_msg");
    $j=0;
    while($d=mysql_fetch_object($c))
    {
        $p=(is_float($j++/2)?$colour1:$colour2);
        $d->name=stripslashes($d->name);$d->email=stripslashes($d->email);$d->url=stripslashes($d->url);$d->came_from=stripslashes($d->came_from);$d->comment=stripslashes($d->comment);$d->comment=nl2br($d->comment);
        if($d->email)
            $name="<a href=mailto:$d->email>$d->name</a>";
        else
            $name="$d->name";
        echo "
        <table border=0 width=100% bordercolor=black cellspacing=0 cellpadding=4>
        <tr>
        <td colspan=2 bgcolor=$p>$d->date</td>
        </tr>
        <tr>
        <td bgcolor=$p width=30% valign=top>$name";
        if($d->url) echo "<br><a href=$d->url>$d->url</a>";
        if($d->came_from) echo "<br>$d->came_from";
        echo "
        </td>
        <td valign=top bgcolor=$p><b>$d->comment</b></td>
        </tr>
        <tr>
        <td align=right bgcolor=$p colspan=2>
        <a href=$PHP_SELF?d=$d->id&l=$l><font size=1>delete</font></a>
        </td>
        </tr>
        </table>
        <br>";
    }
$sql="SELECT * FROM guestbook";
$result = mysql_query($sql);
$num = mysql_numrows($result);
    if($num>$num_msg+$l)
    {
        $asdf=$l+$num_msg;
        $fdsa=$num-$num_msg;
        echo "<p align=right><a href=$PHP_SELF?l=$asdf>successive $fdsa firme del guestbook</a></p>";
    }
}
mysql_close();
?>
<hr>
 

Maxpcc

Nuovo Utente
9 Feb 2020
5
0
1
Buona domenica a tutti,
nessuno che riesca a dirmi per quale motivo non funziona più il guestbook?

Grazie!
 

Maxpcc

Nuovo Utente
9 Feb 2020
5
0
1
Grazie macus_adi!

Posso chiederti delle istruzioni passo passo, se non è troppo complicato? In ogni caso io al momento ho installata una PHP 5.6
 

macus_adi

Utente Attivo
5 Dic 2017
1.266
82
48
IT/SW
PHP:
/**
* Created by PhpS.
* User: MADR
* Date: 11/03/2018
* Time: 16:46
*/

class Custom_Connection {

   /**
    * @var mysqli
    */
   public $mysql;

   /**
    * @var
    */
   protected $stmt;
   /**
    * @var string
    */
   protected $query='';
   /**
    * @var string
    */
   protected $where='';
   /**
    * @var array
    */
   protected $parametri=[];
   /**
    * @var array
    */
   protected $columns=[];
   /**
    * @var string
    */
   protected $table='';
   /**
    * @var string
    */
   protected $order='';
   /**
    * @var string
    */
   protected $type_order='ASC';
   /**
    * @var bool
    */
   private $execute=FALSE;
   /**
    * @var string
    */
   private $host='localhost';
   /**
    * @var string
    */
   private $user='root';
   /**
    * @var string
    */
   private $pass='';
   /**
    * @var string
    */
   public $db_name='test';
   /**
    * @var
    */
   public $exception;

   /**
    * Custom_Connection constructor.
    *
    * @param array $opt
    */
   public function __construct($opt=[]) {
      if(!empty($opt))$this->set_cparam($opt);
      $this->mysql=new mysqli($this->host,$this->user,$this->pass,$this->db_name);
   }

   /**
    * Metodo per la creazione delle opzioni passate al costrutture
    * @param $opt
    */
   private function set_cparam($opt){
      foreach ($opt as $k=>$v){
         if(property_exists($this,$k))$this->$k=$v;
      }
   }

   /**
    * Metodo per cambiare il database di default
    * @param string $dbname
    *
    * @return $this
    */
   public function set_dbName($dbname=''){
      if(!empty($dbname))$this->db_name=$dbname;
      return $this;
   }

   /**
    * Metoto per memorizzare i parametri passati
    * @param array $ar
    *
    * @return $this
    */
   public function set_parameter($ar=[]){
      if(!empty($ar))$this->parametri=$ar;
      return $this;
   }

   /**
    * Metodo per settare la tabella sulla quale effettuare le operazioni
    * @param string $table
    *
    * @return $this
    */
   public function set_table($table=''){
      if(!empty($table))$this->table=$table;
      return $this;
   }
La richiami così:
PHP:
$conn=new Custom_Connection ();
$conn->mysql->query('BLA BLA BLA');
Sono da implementare altre features, è una base estratta da un tutorial che ho fatto... Se vuoi un maggior supporto prova ad utilizzare Medoo.in!
 
Ultima modifica: