problema con isset(GET)

  • Creatore Discussione Creatore Discussione luigi777
  • Data di inizio Data di inizio
Stato
Chiusa ad ulteriori risposte.

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
43
Massa, Italy
Salve, ho un problema .. ho un notice ad questa riga:

Notice: Undefined index: cat in D:\xampp\htdocs\mc2\admin\ph_aggiungi.php on line 8
$pieces = explode("|", addslashes($_GET["cat"]));
Ho messo la get per far che quando seleziono il menu a tendina mi deve rimanere nella voce che l'utente a selezionato..
e nel frattempo popolare l'altra come si è già risolto in un'altra discussione,


solo se metto isset(); etc.. non funziona più l'auto selezione della prima menu a tendina.

come posso metterlo?

il codice intero è questo :
PHP:
<?php
// Includo 
require_once(dirname(__FILE__) . '/../inc.php');
require_once(dirname(__FILE__) . '/admin.php');
require_once(dirname(__FILE__) . "/../template/".$template_admin."/header.php");
	
	
	$pieces = explode("|", addslashes($_GET["cat"]));

if(isset($_POST["invia"]))
{
	$pieces = explode("|", addslashes($_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"]): '';
   $data = (isset($_POST["data"])) ? trim ($_POST["data"]): '';
	$tag = (isset($_POST["tag"])) ? trim ($_POST["tag"]): '';
	$_url = (isset($_POST["_url"])) ? trim ($_POST["_url"]): '';
    $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);
		
          $_url = addslashes($_url);
		$testo = addslashes($testo);
	     $data = addslashes($data);
		$tag = addslashes($tag);
        $active = addslashes($active);
		
	}
	if(empty($user))
	$error = "Non hai inserito l'username";
	elseif(empty($_url))
	$error = "Non hai inserito il _url";
	
	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($data))
	$error = "Non hai inserito la data";
	elseif(empty($active))
	$error = "Non hai inserito lo stato";
 	else
	{
	
		$strSQL = "INSERT INTO foto(user,";
		$strSQL.="_userid,";
		$strSQL.="_cat,";
		$strSQL.="_catid,";
		$strSQL.="_dir,";
		$strSQL.="titolo,";
		$strSQL.="testo,";
		$strSQL.="url,";
		$strSQL.="tag,";
		$strSQL.="data,";
		$strSQL.="active)";
		$strSQL.= "VALUES('".$user."',";
		$strSQL.="".$user_id.",";
		$strSQL.="'".$pieces[1]."',";
		$strSQL.="'".$pieces[0]."',";
		$strSQL.="'".$pieces[1]."',";
		$strSQL.="'".$titolo."',";
		$strSQL.="'".$testo."',";
		$strSQL.="'".$_url."',";
		$strSQL.="'".$tag."',";
		$strSQL.="'".$data."',";
		$strSQL.="'".$active."')";
		$db->query($strSQL) or die($db->error);
        $db->close();
		$msg = "fatto";
		}
	}
?>

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



<table width="100%" align="center">
<tr>
	<td width="16%">User</td>
	<td width="84%"><input name="user" type="text" id="user" readonly  value="<?php if(isset($_POST['user'])){echo $_POST['user'];}else { echo get_username($_SESSION["user_crypt"]); }?>"  /></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 get_userID($_SESSION["user_crypt"]);  }?>"/></td>
</tr><tr>
      <td>Seleziona Categoria</td>
      <td><?php echo "<select onchange=\"document.location.href = '" . $_SERVER['PHP_SELF'] . "?cat=' + this.value;\" name=\"cat\">";?>

        <option  selected="selected" value="">Seleziona</option>
        <?php
	$result = $db->query("SELECT * FROM foto_categorie");
	
	while($row = $result->fetch_array())
	{
	$_cat= $row['titolo'];
	$id = $row['id'];
  ?>
        <option value="<?php echo $id; ?>|<?php echo $_cat; ?>"<?php if($pieces[0]=="".$id."") echo 'selected'?> ><?php echo $_cat; ?></option>
        <?php
  }
?>
      </select></td>
    </tr>
<tr><tr>
    <td>Seleziona Foto</td>
    
    <td>
        <?php
		$images = array();
        if (isset($_GET['cat'])) {
           
            $pieces = explode('|', addslashes($_GET['cat']));

            $dir = "../public/photo/{$pieces[1]}";

            if (is_dir($dir) && is_readable($dir)) {
                $files = glob("{$dir}/*");

                foreach ($files as $fname) {
                    if (
                        $fname == '.' ||
                        $fname == '..' ||
                        $fname == basename($_SERVER['PHP_SELF'])
                    ) {
                        continue;
                    }

                    if (is_dir($fname)) {
                        $images[basename($fname)] = "(Dir) {$fname}";
                    }
                    else {
                        $images[basename($fname)] = $fname;
                    }
                }
            }
        }

        echo "<select name=\"_url\">\n";
        
        foreach ($images as $display_name => $fname) {
            echo "<option value=\"{$display_name}\">{$display_name}</option>\n";
        }
        
        echo "</select>\n";
        ?>
    </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 isset($titolo); }?>" size="40"  /></td>
</tr>
<tr>
	<td>Testo</td>
	<td><textarea cols="50" rows="10" name="testo"><?php if(isset($_POST['testo'])){echo $_POST['testo'];}else { echo isset($testo); }?></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 isset($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 "".isset($active).""; }?>"  /></td>
</tr>
<tr>
	<td></td>
	<td></td>
</tr>
</table>






		<input type="submit" value="Aggiungi Foto" name="invia" />&nbsp;<input type="reset" value="Annulla Modifiche">
	</form>
	<?php 
	}?><?php
require_once(dirname(__FILE__) . "/../template/".$template_admin."/footer.php");
?>
 
Per i tuoi prossimi script, ti consiglio di utilizzare questo metodo:

PHP:
foreach($_POST as $key => $value)
    $_POST[$key] = addslashes(trim($value)); # O qualsiasi altra funzione per proteggere il codice

# Questo ciclo esegue quelle funzioni su tutto l'array di _POST, quindi in seguito, invece di creare nuove variabili utilizzi direttamente $_POST['xxx']

Non sò se hai commesso un errore o meno, ma 'cat' è sia su _GET che su _POST
 
Per i tuoi prossimi script, ti consiglio di utilizzare questo metodo:

PHP:
foreach($_POST as $key => $value)
    $_POST[$key] = addslashes(trim($value)); # O qualsiasi altra funzione per proteggere il codice

# Questo ciclo esegue quelle funzioni su tutto l'array di _POST, quindi in seguito, invece di creare nuove variabili utilizzi direttamente $_POST['xxx']

Non sò se hai commesso un errore o meno, ma 'cat' è sia su _GET che su _POST

non mi serve i tuoi suggerimenti ..
poi per il post e get della solita variabile

se sai cosa è:

esegui codice fuori dal post invia ,
if(isset($_POST["invia"]))
{
esegui il codice dentro al $_post Invia
}
e quindi non ho sbagliato.

grazie lo stesso.
 
Invece ha ragione. Ora il problema no si pone perché usi una sola variabile, ma prima in una riga recuperavi la variabile tramite GET:
PHP:
$pieces = explode("|", addslashes($_GET["cat"]));
E in quella successiva tramite POST:
PHP:
$pieces = explode("|", addslashes($_POST["cat"]));
Quindi, a meno che la stessa variabile non fosse inviata usando sia GET che POST (improbabile e sconsigliato), avevi sbagliato.

Ti ricordo comunque che questa è una comunità, e frasi come "non mi servono i tuoi suggerimenti" non sono ben accette, soprattutto perché, a giudicare dalla qualità del tuo codice, hai un disperato bisogno di suggerimenti.

Chiudo.
 
Stato
Chiusa ad ulteriori risposte.

Discussioni simili