Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106

    Notice: Undefined index: action

    C'è qualcuno che può farmi luce su questo messaggio d'errore?

    Notice: Undefined index: action in C:\Programmi\Apache Group\Apache2\htdocs\freephp\permessi\include\reg. lib.php on line 51

    la pagina reg.lib.php a cui si riferisce è questa: (presa da un articolo di freephp di Gabriele Farina)

    codice:
    <?php
    function reg_register($data){
    	//registro l'utente
    	global $_CONFIG;
    	
    	$id = reg_get_unique_id();
    	mysql_query("
    	INSERT INTO ".$_CONFIG['table_utenti']."
    	(name, surname, indirizzo, occupazione, username, password, temp, regdate, uid)
    	VALUES
    	('".$data['name']."','".$data['surname']."','".$data['indirizzo']."',
    	'".$data['occupazione']."','".$data['username']."',MD5('".$data['password']."'),
    	'1', '".time()."','".$id."')");
    	
    	//Decommentate la riga seguente per testare lo script in locale
    	echo "<a href=\"http://localhost/freephp/permessi/confirm.php?id=".$id."\">Conferma</a>";
    	if(mysql_insert_id()){
    		return reg_send_confirmation_mail($data['mail'], "test@localhost", $id);
    	}else return REG_FAILED;
    }
    
    function reg_send_confirmation_mail($to, $from, $id){
    	//invio la mail di conferma
    	$msg = "Per confermare l'avvenuta registrazione, clicckate il link seguente:
    	http://localhost/freephp/permessi/confirm.php?id=".$id."
    	";
    	return (mail($to, "Conferma la registrazione", $msg, "From: ".$from)) ? REG_SUCCESS : REG_FAILED;
    }
    
    function reg_clean_expired(){
    	global $_CONFIG;
    	
    	$query = mysql_query("
    	DELETE FROM ".$_CONFIG['table_utenti']."
    	WHERE (regdate + ".($_CONFIG['regexpire'] * 60 * 60).") <= ".time()." and temp='1'");
    }
    
    function reg_get_unique_id(){
    	//restituisce un ID univoco per gestire la registrazione
    	list($usec, $sec) = explode(' ', microtime());
    	mt_srand((float) $sec + ((float) $usec * 100000));
    	return md5(uniqid(mt_rand(), true));
    }
    
    function reg_check_data(&$data){
    	global $_CONFIG;
    	
    	$errors = array();
    	
    	foreach($data as $field_name => $value){
    		$func = $_CONFIG['check_table'][$field_name];
    		if(!is_null($func)){
    			$ret = $func($value);
    			if($ret !== true)
    				$errors[] = array($field_name, $ret);
    		}
    	}
    	
    	return count($errors) > 0 ? $errors : true;
    }
    
    function reg_confirm($id){
    	global $_CONFIG;
    	
    	$query = mysql_query("
    	UPDATE ".$_CONFIG['table_utenti']."
    	SET temp='0'
    	WHERE uid='".$id."'");
    	
    	return (mysql_affected_rows () != 0) ? REG_SUCCESS : REG_FAILED;
    }
    ?>
    grazie anticipatamente a chi mi darà una mano
    Il sapere appartiene al mondo

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    qual è la linea 51?

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    la linea 51 è questa:

    codice:
    $func = $_CONFIG['check_table'][$field_name];
    Il sapere appartiene al mondo

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    e cosi ?

    $func = $_CONFIG['check_table']["$field_name"];
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    ora provo e ti so dire
    Il sapere appartiene al mondo

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    106
    niente da fare, con singoli apici o doppi apici il problema restava.

    Ho avuto il piacere e l'onore di avere l'aiuto proprio dall'autore dell'artcolo il quale mi ha dato questa risposta:

    Ciao Davide,

    l'errore che ti viene visualizzato è un Notice, che, nel nostro caso,
    può essere eliminato in diversi modi:
    - controllando l'esistenza della chiave prima di accedervi (usando
    isset($variabile[$chiave]) o sistemi alternativi);
    - richiamando la funzione error_reporting(E_ALL ^ E_NOTICE) (solitamente
    all'inizio del proprio script);
    - impostando error_reporting = E_ALL ^ E_NOTICE nel php.ini (occhio che
    questa modifica influenza TUTTI i tuoi script);

    In linea di massima il codice dovrebbe essere scritto "notice free":
    questo significa che, usando error_reporting(E_ALL) NON dovrebbero
    essere visualizzati errori di nessun tipo, neanche notice. Gli script
    che creiamo per gli articoli di HTML.it NON sono notice free (o per lo
    meno non lo erano fino a qualche mese fa) dato che abbiamo deciso di
    seguire la direttiva di scrivere codice esemplificativo senza
    addentrarci in controlli specifici che renderebbero più complesso lo script.
    ho utilizzato il secondo metodo, inserendo

    codice:
    error_reporting(E_ALL ^ E_NOTICE);
    all'inizio della seconda riga, ora è tutto ok
    ringrazio tutti e in particolare Gabriele per la collaborazione.
    Il sapere appartiene al mondo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.