• Bannato User Attivo

    errore: Undefined index

    ciao ragazzi perche nei file che ho creato dopo che compilo dei campi in un form per registrarmi mi da questo errore

    Notice: Undefined index: action in c:\programmi\easyphp1-8\www\registrazione_1\include\reg.lib.php on line 51

    <?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/Articoli/autenticazione/2/scripts/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/Articoli/autenticazione/1/scripts/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;
    }
    ?>


  • User Attivo

    Se quello é il file che lanci non c'é una riga di codice, ma solo funzioni.
    Quindi che può fare?


  • Bannato User Attivo

    i file che uso sono quello di prima e questi due oltre al form.
    ma non riesco a risolvere quel problema

    register.php

    <!--
    .style1 {
    color: #FF0000;
    font-weight: bold;
    }
    -->
    </style>
    </head>
    <body>
    <?php
    include_once("include/config.php");
    include_once("include/reg.lib.php");
    if(isset($_POST['action']) and $_POST['action'] == 'Invia'){
    $ret = reg_check_data($_POST);
    $status = ($ret === true) ? reg_register($_POST) : REG_ERRORS;

    switch($status){
    case REG_ERRORS:
    ?>
    <span class="style1">Sono stati rilevati i seguenti errori:</span><br>
    <?php
    foreach($ret as $error)
    printf("<b>%s</b>: %s<br>", $error[0], $error[1]);
    ?>
    <br>Premere "indietro" per modificare i dati
    <?php
    break;
    case REG_FAILED:
    echo "Registrazione Fallita a causa di un errore interno.";
    break;
    case REG_SUCCESS:
    echo "Registrazione avvenuta con successo.<br>
    Vi è stata inviata una email contente le istruzioni per confermare la registrazione.";
    break;
    }
    }
    ?>
    </body>
    </html>

    config.php

    <?php
    $_CONFIG['host'] = "localhost";
    $_CONFIG['user'] = "root";
    $_CONFIG['pass'] = "milano";
    $_CONFIG['dbname'] = "articolo_autenticazione";
    $_CONFIG['table_sessioni'] = "sessioni";
    $_CONFIG['table_utenti'] = "utenti";
    $_CONFIG['expire'] = 60;
    $_CONFIG['regexpire'] = 24; //in ore
    $_CONFIG['check_table'] = array(
    "username" => "check_username",
    "password" => "check_global",
    "name" => "check_global",
    "surname" => "check_global",
    "indirizzo" => "check_global",
    "occupazione" => "check_global",
    "mail" => "check_global"
    );
    function check_username($value){
    global $_CONFIG;

    $value = trim($value);
    if($value == "")
    return "Il campo non può essere lasciato vuoto";
    $query = mysql_query("
    SELECT id
    FROM ".$_CONFIG['table_utenti']."
    WHERE username='".$value."'");
    if(mysql_num_rows($query) != 0)
    return "Nome utente già utilizzato";

    return true;
    }
    function check_global($value){
    global $_CONFIG;

    $value = trim($value);
    if($value == "")
    return "Il campo non può essere lasciato vuoto";

    return true;
    }

    //--------------
    define('AUTH_LOGGED', 99);
    define('AUTH_NOT_LOGGED', 100);
    define('AUTH_USE_COOKIE', 101);
    define('AUTH_USE_LINK', 103);
    define('AUTH_INVALID_PARAMS', 104);
    define('AUTH_LOGEDD_IN', 105);
    define('AUTH_FAILED', 106);
    define('REG_ERRORS', 107);
    define('REG_SUCCESS', 108);
    define('REG_FAILED', 109);
    $conn = mysql_connect($_CONFIG['host'], $_CONFIG['user'], $_CONFIG['pass']) or die('Impossibile stabilire una connessione');
    mysql_select_db($_CONFIG['dbname']);
    ?>


  • Moderatore

    Qual è il file reg.lib.php?
    Alla riga 51 dovrebbe starci un qualcosa tipo:
    if ($_POST['action'], $_SESSION['action']; $var['action']) etc etc non definita.

    Non è un errore ma un warning.

    :ciauz:


  • Bannato User Attivo

    ciao massy grazie x l'aiuto.
    il file che dice è questo.
    ma non capisco come togliere quel problema.

    <?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/Articoli/autenticazione/2/scripts/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/Articoli/autenticazione/1/scripts/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;
    }
    ?>