Warning: addslashes() come risolvere??

Salve, io ho un problema ma non so se è giusto cosi.

io ho questo codice:

<?php
// Includo 
require_once(dirname(__FILE__) . '/../inc.php');
require_once(dirname(__FILE__) . '/admin.php');
require_once(dirname(__FILE__) . "/../template/".$template_admin."/header.php");

if($_POST["invia"])
{

   $pieces = explode("|", $_POST["cat"]);
   $user = (isset($_POST["user"])) ? trim ($_POST["user"]): '';
   $user_id = (isset($_POST["user_id"])) ? trim ($_POST["user_id"]): '';
    $titolo = (isset($_POST["titolo"])) ? trim ($_POST["titolo"]): '';
    $testo = (isset($_POST["testo"])) ? trim ($_POST["testo"]): '';
   $testo_full = (isset($_POST["testo_full"])) ? trim ($_POST["testo_full"]): '';
    $data = (isset($_POST["data"])) ? trim ($_POST["data"]): '';
   $tag = (isset($_POST["tag"])) ? trim ($_POST["tag"]): '';
    $active = (isset($_POST["active"])) ? trim ($_POST["active"]): '';
   // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
   if (!get_magic_quotes_gpc()) {
      $user = addslashes($user);
      $user_id = addslashes($user_id);
       $titolo = addslashes($titolo);
        
      $testo = addslashes($testo);
      $testo_full = addslashes($testo_full);
        $data = addslashes($data);
      $tag = addslashes($tag);
        $active = addslashes($active);
      $pieces= addslashes($pieces);
   }
   if(empty($user))
   $error = "Non hai inserito l'username";
   elseif(empty($titolo))
   $error = "Non hai inserito il titolo";
   elseif($_POST["cat"] == "")
   $error = "Non hai inserito la categoria";
   elseif(empty($testo))
   $error = "Non hai inserito il testo";
   elseif(empty($testo_full))
   $error = "Non hai inserito il testo full";
   elseif(empty($data))
   $error = "Non hai inserito la data";
   elseif(empty($active))
   $error = "Non hai inserito lo stato";
    else
   {
   
      $strSQL = "INSERT INTO articoli(user,";
      $strSQL.="_userid,";
      $strSQL.="_cat,";
      $strSQL.="_catid,";
      $strSQL.="titolo,";
      $strSQL.="testo,";
      $strSQL.="testo_full,";
      $strSQL.="tag,";
      $strSQL.="data,";
      $strSQL.="active)";
      $strSQL.= "VALUES('".$user."',";
      $strSQL.="'".$user_id."',";
      $strSQL.="'".$pieces[1]."',";
      $strSQL.="'".$pieces[0]."',";
      $strSQL.="'".$titolo."',";
      $strSQL.="'".$testo."',";
      $strSQL.="'".$testo_full."',";
      $strSQL.="'".$tag."',";
      $strSQL.="'".$data."',";
      $strSQL.="'".$active."')";
      mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
      
      $msg = "fatto, registrato completamente";
   }
}
?>

<h1>Aggiungi</h1>
<?php
 if(isset($error)){ echo $error;}
if(isset($msg)){ echo $msg;} else {
?>
   <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">



<table align="center">
<tr>
   <td>User</td>
   <td><input name="user" type="text" id="user" readonly  value="<?php if(isset($_POST['user'])){echo $_POST['user'];}else { echo get_username($_SESSION["_userid"]); }?>"  /></td>
</tr>
<tr>
   <td>User ID</td>
   <td><input name="user_id" type="text" id="user_id" readonly  value="<?php if(isset($_POST['user_id'])){echo $_POST['user_id'];}else { echo $_SESSION["_userid"]; }?>"  /></td>
</tr><tr>
      <td>Seleziona Categoria</td>
      <td><select name="cat" >
        <option  selected="selected" value="">Seleziona</option>
        <?php
   $result = mysql_query("SELECT * FROM articoli_categorie");
   
   while($row = mysql_fetch_array($result))
   {
   $_cat= $row['titolo'];
   $id = $row['id'];
  ?>
        <option value="<?php echo $id; ?>|<?php echo $_cat; ?>" <?php if($cat=="".$id ."") echo 'selected'?>><?php echo $_cat; ?></option>
        <?php
  }
?>
      </select></td>
    </tr>
<tr>
   <td>Titolo</td>
   <td><input name="titolo" type="text" id="titolo"  value="<?php if(isset($_POST['titolo'])){echo $_POST['titolo'];}else { echo $titolo; }?>"  /></td>
</tr>
<tr>
   <td>Testo</td>
   <td><textarea cols="20" rows="10" name="testo"><?php if(isset($_POST['testo'])){echo $_POST['testo'];}else { echo $testo; }?></textarea></td>
</tr>
<tr>
   <td>Testo Full</td>
   <td><textarea cols="20" rows="10" name="testo_full"><?php if(isset($_POST['testo_full'])){echo $_POST['testo_full'];}else { echo $testo_full; }?></textarea></td>
</tr>
<tr>
   <td>Data</td>
   <td><input name="data" type="text" id="data"  value="<?php if(isset($_POST['data'])){echo $_POST['data'];}else { echo  "".date("d-m-Y").""; }?>"  /></td>
</tr><tr>
   <td>tag</td>
   <td><input name="tag" type="text" id="tag"  value="<?php if(isset($_POST['tag'])){echo $_POST['tag'];}else { echo $tag; }?>"  /></td>
</tr>
<tr>
   <td>Stato di attivazione</td>
   <td><input name="active" type="text" id="active"  value="<?php if(isset($_POST['active'])){echo $_POST['active'];}else { echo "".$active.""; }?>"  /></td>
</tr>
<tr>
   <td></td>
   <td></td>
</tr>
</table>






      <input type="submit" value="Aggiungi Categoria Articolo" name="invia" />&nbsp;<input type="reset" value="Annulla Modifiche">
   </form>
   <?php 
   }?><?php
require_once(dirname(__FILE__) . "/../template/".$template_admin."/footer.php");
?>

se faccio cosi dove sta:

$pieces = explode("|", $_POST["cat"]);

e poi:

$pieces= addslashes($pieces);

Mi da l'avviso:

Warning: addslashes() expects parameter 1 to be string, array given in D:\xampp\htdocs\luigi\admin\art_aggiungi.php on line 30

Mi dite come posso risolvere il problema?

Perché essendo che uso quello mi risolve anche i problema dei apici caratteri strani etc..

ma non riesco con il menu a tendina.

mi dite come posso risolvere?

grazie mille.

inviato 5 anni fa
luigi
X 0 X

Come dice il messaggio d'errore, il parametro che addslashes si aspetta deve essere una stringa mentre tu gli hai mandato un array.

Puoi usare addslashes prima dell'explode, in questo modo tutti gli elementi contenuti nel tuo array risulteranno già filtrati:

$pieces = explode("|", addslashes($_POST["cat"]));
risposto 5 anni fa
s.rotondo
X 0 X

ok, grazie e fatto.

risposto 5 anni fa
luigi
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili