Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    problema con la registrazione

    Salve ho alcuni problemi allora sto facendo la parte della registrazione.

    Io ho fatto cosi nella pagina registrati

    codice:
    <html>
    <head>
    <title>Modulo di registrazione</title>
    <link rel="stylesheet" type="text/css" href="../css/sito.css">
    <meta charset="utf-8">
    <script> 
    function controllo(){ 
    with(document.modulo) { 
    if (name.value=="" || cognome.value=="" || indirizzo.value=="" || occupazione.value=="" || username.value=="" || password.value=="") {
        alert("Errore: non hai compilato alcuni campi");
    name.focus();
    cognome.focus();
    indirizzo.focus();
    occupazione.focus();
    username.focus();
    password.focus();
    return false;
    }
    }
    alert("Controllo effettuato con successo. Il modulo sarà inviato."); 
    return true; 
    } 
    </script>
    <style >
    #registra {
    width: 50%;
    height: 6%;
    padding:1;
    border: 1px solid black;
    background: #0099FF;
    margin: 0 auto;
    }
    
    
    #dentro {
    width: 50%;
    height: 50%;
    padding:1;
    border: 1px solid black;
    background: #FF3300;
    margin: 0 auto;
    }
    
    
    body{
    background-color: #C0C0C0;
    }
    </style>
    </head>
    <body>
    <div id="hormenu">
    <ul>
      <li><a href="home.php">Home</a></li>
      <li><a href="Accessori.php">Accessori</a></li>
      <li><a href="canne da pesca.php">Canne da pesca</a></li>
    </ul>
    </div>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <div id="registra">
    <center>
    <p>Registrati: i campi con (*) sono obligatori</p>
    </center>
    </div>
    <div id="dentro">
    <form action="register.php" name="modulo" onSubmit="return controllo();" method="post">
    <center>
    <table border="0" width="300">
        <tr>
            <td>Nome*:</td>
            <td><input type="text" name="name"></td>
        </tr>
        <tr>
            <td>Cognome*:</td>
            <td><input type="text" name="cognome"></td>
        </tr>
        <tr>
    <td>indirizzo*</td>    
    <td><input type="text" name="indirizzo"></td>
        </tr>
        <tr>
    <td>occupazione*</td>
    <td><input type="text" name="occupazione"></td>    
        </tr>
        <tr>
            <td>Username*:</td>
            <td><input type="text" name="username"></td>
        </tr>
        <tr>
            <td>Password*:</td>
            <td><input type="password" name="password"></td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" name="action" value="Invia"></td>
        </tr>
    </table>
    </center>
    </form>
    </div>
    </body>
    </html>
    Quando clicco il bottone la pagina mi da solo Conferma e invece mi dovrebbe dare conferma. Registrazione effettuata con successo, adesso vi posto tutto il resto del file


    register.php
    codice:
    <html>
    <head>
    <style type="text/css">
    .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>
    reg.lib.php

    Codice PHP:
    <?phpfunction reg_register($data){    //registro l'utente    global $_CONFIG;        $id = reg_get_unique_id();    mysqli_query("    INSERT INTO ".$_CONFIG['table_utenti']."    (nome, cognome,indirizzo, occupazione, username, password, temp, regdate, uid)    VALUES    ('".$data['nome']."','".$data['cognome']."','".$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:8888/acquisto/registrazione/confirm.php?id=".$id."\">Conferma</a>";    //if(mysqli_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 mysqli_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) > $errors true;}
    function 
    reg_confirm($id){    global $_CONFIG;        $query mysqli_query("    UPDATE ".$_CONFIG['table_utenti']."    SET temp='0'    WHERE uid='".$id."'");        return (mysqli_affected_rows () != 0) ? REG_SUCCESS REG_FAILED;}?>
    config.php


    Codice PHP:
    <?php$_CONFIG['host'] = "localhost";$_CONFIG['user'] = "root";$_CONFIG['pass'] = "root";$_CONFIG['dbname'] = "pesca";
    $_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",    "nome" => "check_global",    "cognome" => "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 mysqli_query($conn,"    SELECT id    FROM ".$_CONFIG['table_utenti']."    WHERE username='".$value."'");        if(mysqli_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= mysqli_connect($_CONFIG['host'], $_CONFIG['user'], $_CONFIG['pass'],$_CONFIG['dbname']);mysqli_select_db($_CONFIG['dbname']); error_reporting(E_ALL ^ E_DEPRECATED); ?>
    confirmphp che me lo da vuoto

    Codice PHP:
    <?phpinclude_once("include/config.php");include_once("include/reg.lib.php");
    if(isset(
    $_POST['id']) and strlen($_POST['id']) == 32){    reg_clean_expired();    $status reg_confirm($_POST['id']);        switch($status){        case REG_SUCCESS:            echo "La tua registrazione è stata confermata; ora puoi effettuare il login.";        break;        case REG_FAILED:            echo "La registrazione non può essere confermata, probabilemente poichè è scaduta.";        break;    }}?>

  2. #2
    Ragazzi rispondete perchè sono giorni che aspetto vostre risposte ma niente.
    Io sono arrivato più specifico al problema ovvero
    il problema sta nel file reg.lib.php l'errore è che mi passa REG_ERROR invece di passarmi REG_SUCCES
    perche io lo sto testando in locale e l'email non l'invia perchè c'è bisogno di una parte di spazio per renderlo publico, quindi l'istruzione mail non funzione e quindi mi passa REG_ERROR sapete come devo fare per togliere l?istruzione mail e mi mandi REG_SUCCES

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    a parte che per interpretare il codice che hai postato ci vuole molta fantasia (i ritorni a capo ti conviene sempre controllarli prima di inviare il messaggio), la cosa migliore che puoi fare è "mockare" la funzione che dovrebbe inviare una email in modo che ti restituisca sempre il valore per true (banalmente, commenta la chiamata a mail() e mettici un return true)

    per inviare le email, io ti consiglio di usare altri metodi (ad esempio, PHPMailer)

  4. #4
    Si Ho provato ha fare quello che hai detto tu e adesso me lo da in bianco invece della scritta di prima ossia "Registrazione Fallita a causa di un errore interno.". Prima non hai capito quello che ho postato perché ho sbagliato io aspetta che te la rinvio

    Prima era cosi

    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;
    }


    invece ora e cosi

    function reg_register($data){
    //registro l'utente
    global $_CONFIG;

    $id = reg_get_unique_id();
    mysqli_query("
    INSERT INTO ".$_CONFIG['table_utenti']."
    (nome, cognome, indirizzo, occupazione, username, password, temp, regdate, uid)
    VALUES
    ('".$data['nome']."','".$data['cognome']."','".$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:8888/acquisto/registrazione/confirm.php?id=".$id."\">Conferma</a>";
    if(mysqli_insert_id()){
    return true REG_SUCCESS;
    }else return REG_FAILED;
    }

    Aspetto risposta?

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    E la mail, dove si inserisce ?
    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

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    vado a tentoni

    Codice PHP:
    //Decommentate la riga seguente per testare lo script in locale
    echo "<a href=\"http://localhost:8888/acquisto/registrazione/confirm.php?id=".$id."\">Conferma</a>";
    if(
    mysqli_insert_id()){
    return 
    REG_SUCCESS// ho tolto il true
    }else return REG_FAILED;


  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quote Originariamente inviata da clasku Visualizza il messaggio
    vado a tentoni

    Codice PHP:
    //Decommentate la riga seguente per testare lo script in locale
    echo "<a href=\"http://localhost:8888/acquisto/registrazione/confirm.php?id=".$id."\">Conferma</a>";
    if(
    mysqli_insert_id()){
    return 
    REG_SUCCESS// ho tolto il true
    }else return REG_FAILED;


    Non c'è l'immissione della mail nella form (o allora mi manca un elemento).

    Capture061116001.JPG
    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

  8. #8
    Ho provato a mettergli REG_ SUCCES ma mi da lo stessa cosa ossia : "Registrazione Fallita a causa di un errore interno."
    Potrebbe essere il file Config.php che forse ho sbagliato a mettere il collegamento al mysql perché con la nuova versione di php non ho capito come collegarmi al mysql

    ecco ti mando come io lo collegato al mysql

    codice:
    $link = mysqli_init();
    $success = mysqli_real_connect($link, $_CONFIG['host'], $_CONFIG['user'], $_CONFIG['pass'], $_CONFIG['dbname'], $_CONFIG['port']);

  9. #9
    a badaze mail e indicato nel form che si chiama Indirizzo capito

  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quote Originariamente inviata da Danielepaol Visualizza il messaggio
    a badaze mail e indicato nel form che si chiama Indirizzo capito
    Allora perche usi $data['mail'] nel tuo codice al posto di $data['indirizzo'] ?
    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

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.