Problema con cookie e database che non riesco a risolvere

Il server monta:

Webserver   Apache/2.0.54 (Fedora)

Versione Php   5.0.4

Versione MySQL   4.1.11

Lo script è questo:

<?php 
/* Inclusione file di configurazione del database */
include("config.php");

/* Connessione al database */
$dbcon = mysql_connect($db_hostname, $db_username, $db_password);
mysql_select_db("$db_name");

/* Form login */
$form_login = "<form action=\"login.php?action=login\" method=\"post\" class=\"Stile1\">
 Username: <input size=\"15\" name=\"username\" type=\"text\" class=\"Stile2\">
Password: <input size=\"15\" name=\"password\" type=\"password\" class=\"Stile2\">
<input type=\"checkbox\" name=\"checkbox\" value=\"checkbox\"> 
Login automatico
<input value=\"Login\" name=\"login\" type=\"submit\" class=\"Stile2\"> 
| 
<a href=\"phpBB2/profile.php?mode=sendpassword\" <span class=\"link_white\"> Password dimenticata </a> | <a href=\"phpBB2/profile.php?mode=register\">Registrati</a></span></form>";
?>
<table border="0" cellpadding="0" cellspacing="0">
   <tr> 
    <td width="185"><img src="images/top_left_logo.gif" width="185" height="49"></td>
    <td width="416" align="center" background="images/top_middle_tile.gif" class="Stile1"><br />
    Il primo sito degli studenti del Liceo Maffei di Verona </td>
    <td width="37"><img src="images/top_nav_corner.gif" width="37" height="49"></td>
        <td width="382" valign="bottom" nowrap background="images/top_nav_bg.gif" class="link_white">
          <span class="link_white"><a class="navs" href="index.php">Home</a>          <!-- BEGIN switch_user_logged_in -->
          </span><span class="Stile1">| </span><span class="link_white"><a class="navs" href="forum/profile.php?mode=editprofile">User CP</a> </span><span class="Stile1">| </span><span class="link_white"><a href="forum/index.php">Forum</a>          <!-- END switch_user_logged_in -->          
          <!-- BEGIN switch_user_logged_out -->
          </span><span class="Stile1">|</span><span class="link_white"> <a class="navs" href="forum/profile.php?mode=register">Registrati</a></span><span class="Stile1"> |
          <!-- END switch_user_logged_out -->
    </span><span class="link_white"><a class="navs" href="gforum/roupcp.php">Gruppi</a> </span><span class="Stile1">|</span><span class="link_white"> <a class="navs" href="forum/search.php">Cerca</a> </span><span class="Stile1">|</span><span class="link_white"> <a class="navs" href="forum/faq.php">FAQ</a> </span><span class="Stile1">|</span><img src="images/spacer.gif" width="8" height="8" hspace="5"></td>
  </tr>
  
    <td><img src="images/top_left_bottom.gif" width="185" height="11"></td>
    <td background="images/top_left_bottom.gif"><img src="images/top_left_bottom.gif" width="185" height="11"></td>
    <td><img src="images/top_corner_bottom.gif" width="37" height="11"></td>
    <td valign="bottom" background="images/top_nav_bottom.gif"><img src="images/top_nav_bottom.gif" width="1" height="11"></td>
  </tr>
</table>
<table width="100%"  border="0" cellpadding="0" cellspacing="0" bgcolor="#004a80">
  <tr>
    <th scope="col" align="left"><?php 
   if (isset($_COOKIE['studentimaffei']))
   {
      $query = "SELECT * FROM phpbb_users WHERE username='$_COOKIE[studentimaffei]'";
      $result = mysql_query($query, $dbcon);
      $row = mysql_fetch_array($result);
      echo "<span class=\"Stile4\">Bentornato  $_COOKIE[studentimaffei] | <a href=\"login.php?action=logout\" class=\"link_white\">Logout</a></span>";
   }
   else
   {
      echo $form_login;
   }

   ?></th>
  </tr>
</table>

<?php include("menu.php");?>
     
      <table width="79%"  border="0" align="left" cellpadding="0" cellspacing="0">
        <tr>
          <th width="5" scope="col">&nbsp;</th>
          <th scope="col"> <?php 
print '
      <table width="100%"  border="0">
         <tr>
           <th bgcolor="#004a80" class="Stile5" scope="col" cellpadding="0" cellspacing="0"><div align="justify">Ipse Dixit: </div></th>
         </tr>
        </table><br>';

if ($action == "save")
{
   /* Verifica campi */
   $username = $_COOKIE['studentimaffei'];
   $query = "SELECT username,user_password from phpbb_users WHERE username = '$username'"; 
   $risultato = mysql_query($query); 
   $row = mysql_fetch_array($risultato);
   if ($_COOKIE['studentimaffei_password'] === $row['user_password'])
   {
      if (trim($messaggio) == "")
      {
         echo("<span class=\"Stile3\" align=\"center\"><strong>Devi riempire i campi!<br><br></strong><div    class=\"link_black\"><a href=\"ipse_dixit.php\">Clicca Qui</a></div></span>");
         exit();
      }
      elseif (!get_magic_quotes_gpc())
      {
         $messaggio = addslashes($_POST['messaggio']);
      }
      else 
      {
         $messaggio = $_POST['messaggio'];
      }
      $messaggio = htmlspecialchars($messaggio);
      $messaggio = nl2br($messaggio);
      $data = mktime(date("H")+1, date("j, n, Y,"));
      $triplette = explode('.',$_SERVER['REMOTE_ADDR']);
      $ip = $triplette[0].'.'.$triplette[1].'.'.$triplette[2].'.'.$triplette[3];
      $active = 0;
      $query = "INSERT INTO ipse_dixit (username , messaggio, data, ip, active) VALUES ('$username', '$messaggio','$data','$ip','$active')"; 
      if (mysql_query($query))
      {   
         echo ("<span class=\"Stile3\">Grazie per l'inserimento!<br>L'ipse dixit verrà visionato dagli amministratori, se verrà ritenuto idoneo verrà pubblicato.<br><br>Per tornare alla pagina di inserimento <a href=\"ipse_dixit.php\">clicca QUI</a></span>");
      }
      else
      {
         echo ("<span class=\"Stile3\">Errore durante l'inserimento!<br>Si prega di contattare un amministratore!</span>");
      }   
   }
   else echo ("HACK!");
}
   
      
if (isset($_COOKIE['studentimaffei']))
{
      $query = "SELECT * FROM phpbb_users WHERE username='$_COOKIE[studentimaffei]'";
      $result = mysql_query($query, $dbcon);
      $row = mysql_fetch_array($result);
      $form_auth = '
      <html>
      <head>
      </head>
      
      <body>
      <form name="messaggeria" method="post" action="ipse_dixit.php?action=save">
      <table width="100%"  border="0">
         <tr class="Stile3">
         <td><div align="center" class="text_big_bold">
           <div align="right">Messaggio:<br>
            <span class="Stile2" align="center">(max 1000 caratteri)</span></div>
         </div></td>
         <td><div align="justify">
           <textarea name="messaggio" cols="50" rows="5" class="Stile3" maxlength="1000"></textarea>
         </div></td>
        </tr>
        <tr class="Stile3">
         <td>&nbsp;</td>
         <td><input name="Submit" type="submit" class="Stile3" value="Invia"></td>
        </tr>
      </table>
      </form>
      </body>
      </html>';      
   echo $form_auth;
}
else 
{
   echo ('<span class="Stile3"><strong>Per inserire un messaggio devi essere registrato ed avere fatto il login!</strong></span><br><br>');
}
print '
      <table width="100%"  border="0">
         <tr>
           <th bgcolor="#004a80" class="Stile5" scope="col" cellpadding="0" cellspacing="0"><div align="justify">Ultimi ipse dixit inseriti: </div></th>
         </tr>
        </table>';
$query = "SELECT * FROM ipse_dixit WHERE active = 1 ORDER BY id DESC LIMIT 0,50";
$result = mysql_query($query, $dbcon);
while ($row = mysql_fetch_array($result))
{
   print "<div align=\"justify\" class=\"Stile3\">Inserito Il: " . date("j/n/y", $row['data']) . "</strong><br><br>
         $row[messaggio]<br><hr></div>
   ";
}
?>

Su un altro server funziona perfettamente... sul mio no... e non riesco a capire perchè... mi hanno detto che potrebbe essere il PHP 5... ma allora cosa devo fare?

Dimenticavo: Se eseguo lo script ricevo in risposta: HACK!

Nota: ho controllato le query e sono correte, ho controllato i cookie e sono corretti, password del cookie e del database coincidono.

inviato 10 anni fa
z3ro
z3ro
1
X 0 X

come avrai notato, il messaggio "HACK!" si ottiene se l'istruzione

if ($_COOKIE['studentimaffei_password'] === $row['user_password'])

non è verificata.

Per prima cosa eviterei di usare === al posto del classico ==, inoltre metti un

echo $_COOKIE['studentimaffei_password'] . ' ' . $row['user_password'];

per visualizzare i due valori e verificare se effettivamente sono diversi.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

effettivamente forse c'è qualcosa che non và... compare solo 1 password... ora provo a capire se è quella del cookie o del database quella che manca ;)

Manca quella del database... ma io se faccio le query ottengo il risultato corretto...  :'(

risposto 10 anni fa
z3ro
z3ro
1
X 0 X

ogni volta che si effettua una query andrebbe controllato il risultato ...

$risultato = mysql_query($query);

if (!$risultato) {

   die("<pre><b>Errore nella query:</b>\n\n$query\n\n<b>" . mysql_error() . '</b></pre>');

}

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Errore nella query:

SELECT username,user_password from phpbb_users WHERE username = 'z3ro'

No database selected

File config.php:

<?php

/* File di configurazione */

$db_host = "85.32.108.11";

$db_user = "root";

$db_pass = "************";

$db_name = "my_studentimaffei";

?>

anche mettendo localhost come host dà errore...

risposto 10 anni fa
z3ro
z3ro
1
X 0 X

il problema non è nel server MySQL (localhost o IP) ma nella selezione del database.

Controlla l'esito della mysql_select_db("$db_name"); (perché hai messo gli apici ?!?)

$db_selected = mysql_select_db($db_name);

if (!$db_selected) {

   die ("Errore nella selezione del database $db_name : " . mysql_error());

}

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ho trovato l'errore... mentre nel file config le impostazioni erano queste:

$db_host

$db_user

$db_pass

$db_name

nel file php erano queste:

$dbcon = mysql_connect($db_hostname, $db_username, $db_password);

mysql_select_db("$db_name");

ora funziona :)

 :bye:

risposto 10 anni fa
z3ro
z3ro
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda