[PHP] problema registrazione

non ci siamo !
alla funzione devi passare la connessione e poi la query non i dati di connessione.
come hai fatto sotto

in che senso non ho capito scusami se faccio mille domande ma purtroppo non ho studiato a scuola php quindi non so come funziona benissimo riesci ad farmi un esempio per favore
 
te l'ho fatto vedere nel primo mio post di questa discussione e ripetuto nel mio ultimo
 
noto con piacere che la pagina non da più errori
 
segui il messaggio di errore e vedi nel codice quando lo stampa
 
ok va bene se sei di milano mi piacerebbe conoscerti e prender un caffè insieme e ti ripago tutti i favore che mi hai fatto
 
ecco il file ho provato ad cambiare ma non va comque da sempre errore
PHP:
<?php

// includo il file con la lista delle funzioni di utilità
require_once 'inc/utils.php';

// Qui inseriremo gli errori avvenuti durante la validazione
// dei dati inseriti dall'utente nel form di login
$formErrors = array();

// Questi sono i dati inviati dall'utente
$userName            = $_POST['user-name'];
$userEmail             = $_POST['user-email'];
$userEmailRepeat     = $_POST['user-email-repeat'];
$userPassword         = $_POST['user-password'];
$userPasswordRepeat = $_POST['user-password-repeat'];

/* Controllo sull'indirizzo email
*
* Se la lunghezza è 0 allora il campo è vuoto
* altrimenti controllo che l'indirizzo email sia valido
* altrimenti controllo che l'indirizzo email sia uguale
* all'indirizzo email ripetuto
*/
if (strlen($userEmail) == 0)
{
    $formErrors[] = 'Il campo email &egrave; obbligatorio.';
}
else if (false == emailIsValid($userEmail))
{
    $formErrors[] = "L'indirizzo email inserito non &egrave; corretto";
}
else if ($userEmail != $userEmailRepeat)
{
    $formErrors[] = "L'indirizzo email e l'indirizzo ripeti email non sono uguali";
}
  
/* Controllo sulla password inserita
*
* Se la lunghezza è 0 allora il campo è vuoto
* altrimenti controllo che la password abbia una lunghezza di almeno 6 caratteri
* altrimenti controllo che il campo password ed il campo ripeti password siano uguali
*/
if (strlen($userPassword) == 0)
{
    $formErrors[] = 'Il campo password &egrave; obbligatorio';
}
else if (strlen($userPassword) < 6)
{
    $formErrors[] = 'La password inserita &egrave; troppo corta';
}
else if ($userPassword != $userPasswordRepeat)
{
    $formErrors[] = 'Il campo password ed il campo ripeti password non sono uguali';
}
  
/* Controllo sul campo nome
*
* Se la lunghezza è 0 allora il campo è vuoto
* altrimenti controllo che il campo nome abbia una lunghezza di almeno 3 caratteri
*/
if (strlen($userName) == 0)
{
    $formErrors[] = 'Il campo nome &egrave; obbligatorio';
}
else if (strlen($userName) < 3)
{
    $formErrors[] = 'Il nome inserito &egrave; troppo corto';
}
  
// Se il conteggio degli errori è 0 allora i dati inviati dall'utente
// sono validi, procedo con la registrazione del nuovo utente  
if (count($formErrors) == 0)
{
    // includo ora la lista di funzioni che servono per gestire l'utente
    require_once 'inc/user.php';
  
    // Per prima cosa mi assicuro che l'indirizzo email del nuovo utente
    // non sia già registrato nel database
    if (true == userEmailExists($userEmail))
    {
        $formErrors[] = "L'indirizzo email inserito &egrave; gi&agrave; stato registrato";
    }
    else
    {
        // La password inserita viene ora criptata tramite la funzione md5()
        // criptare la password è un buon modo per alzare il livello di sicurezza
        // del nostro sistema di login  
        $userPassword = md5($userPassword);
      
        // Questo è il codice alfanumerico di 32 caratteri che verrà utilizzato
        // nel link di attivazione account
        $activationToken = md5(time().'_'.$userEmail);
      
        /* Tento di registrare il nuovo utente sul database
        *
        * Se non riesco avverto il nuovo utente che non ho potuto registrarlo
        * altrimenti gli invio una email contenente un link con cui confermare
        * la registrazione
        */
        $userData = array(
            'email'        => $userEmail,
            'password'     => $userPassword,
            'name'         => $userName,
            'token'        => $activationToken
        );
      
        $userId = registerNewUser($userData);
      
        if (false == $userId)
        {
            $formErrors[] = 'Si &egrave; verificato un errore durante la registrazione';
        }
        else
        {
            // Questo è il link di attivazione che serve all'utente per confermare
            // la propria registrazione
            $activationLink = 'http://'.$_SERVER['HTTP_HOST'];
            $activationLink .= str_replace('register.php', 'confirm.php', $_SERVER['REQUEST_URI']);
            $activationLink .= '?token='.$activationToken;
          
            // Invio la mail in formato HTML
            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
          
            // Oggetto e testo dell'email da inviare
            $subject     = 'Attivazione account';
            $emailText     = "<p>Gentile {$userName}, la tua registrazione &egrave; avvenuta correttamente.</p>"
                            . "<p>Per attivare il tuo account, clicca sul link sottostante</p>"
                            . "<p><a href=\"{$activationLink}\">Clicca qui per attivare il tuo account</p>";
                                          
            // Provo ora ad inviare l'email all'indirizzo del nuovo utente
            // Redirigo poi il nuovo utente alla pagina di conferma invio email
            if (false == mail($userEmail, $subject, $emailText, $headers))
            {
                $formErrors[] = "Si &egrave; verificato un errore durante il tentativo di invio dell'email di conferma";
            }
            else
            {
                header('Location: confirm_sendmail.php');
            }
        }  
          
    }
  
}

// Stampo a video la lista degli errori, se presenti
echo showFormErrors($formErrors);

?>
 
Ultima modifica di un moderatore:
si ferma qui
PHP:
$userId = registerNewUser($userData);

  if (false == $userId) {
  $formErrors[] = 'Si &egrave; verificato un errore durante la registrazione';
  }
recupera la funzione registerNewUser() va sicuramente in errore, controlla le query e la sintassi
ps:
non sono di Milano , l'ultima volta che ci sono stato era il 2009, grazie comunque
 
aaaa tu dici quello tra parentesi ($userData); che va in errore? o tutto il codice?
 
nel file utils.php hai una funzione che si chiama registerNewUser()
PHP:
function registerNewUser()
trovala e postala
 
PHP:
<?php

/*
* Questo file contiene la lista di funzioni di utilit�
* utilizzate nel sistema
*/

// Questa funzione permette di stampare una lista
// HTML di $formErrors
function showFormErrors($formErrors)
{
    return '<ul><li>'.implode('</li><li>', $formErrors).'</li></ul>';
}

// Questa funzione si occupa di controllare se un indirizzo
// email � stato scritto correttamente
function emailIsValid($email)
{
    if (false == preg_match('/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/', $email))
    {
        return false;
    }
    else
    {
        return true;
    }
}

// Questa funzione si occupa di controllare se un token
// � scritto correttamente
function tokenIsValid($token)
{
    // Un token deve essere composto solamente da numeri e lettere
    // ed avere una lunghezza di 32 caratteri
    if (false == preg_match('/^([a-z0-9]){32}$/', $token))
    {
        return false;
    }
    else
    {
        return true;
    }
}
 
Ultima modifica di un moderatore:
non c'è li sarà in un altro file che includi, trovala
 
sto cercando il file la stanchezza si fa sentire dopo tante ore ancora un attimo
 
ti posso assicura ho girato tutti i file non c'è ne altri di quel comando solo nel primo quindi user.php devo inserirlo nei altri?
 
PHP:
<?php

/*
* In questo file sono contenute le funzioni utili
* alla gestione degli utenti
*/

// Includo la lista delle funzioni per dialogare con il database
require_once 'database.php';

// Questa funzione si occupa di autenticare un utente
// nel sistema
function authenticateUser($userEmail, $userPassword)
{
    // Apro una connessione con il database
    $connection = getConnection();
  
    // Cerco nel database un utente attivo
    // con la coppia email:password specificata
    $sql = "SELECT user_id
            FROM user
            WHERE
                email = '%s'
            AND
                password = '%s'
            AND
                active = 1";

    // Assegno alla query i parametri da cercare
    $sql = sprintf($sqli, $userEmail, $userPassword);
  
    // Eseguo la query sul database
    $result = mysqli_query($connection, $sql);
  
    // Se si è verificato un errore oppure non ho trovato nessun risultato
    if (false == $result || mysqli_num_rows($result) == 0)
        return false;
  
    // Questa riga contiene le informazioni dell'utente, se trovato nel database  
    $row = mysqli_fetch_assoc($result);

    // Ritorno lo user_id dell'utente
    return $row['user_id'];  
}

// Questa funzione permette di registrare un nuovo utente nel sistema
function registerNewUser($userData)
{
    // Apro una connessione con il database
    $connection = getConnection();

    // Questi sono i dati da inserire nel database
    $userEmail         = $userData['email'];
    $userPassword     = $userData['password'];
    $userName        = $userData['name'];
    $token             = $userData['token'];
  
    // Query per inserire i nuovi dati nel database
    $sql = "INSERT INTO user
                (email, password, name, token)
            VALUES
                ('%s', '%s', '%s', '%s') ";
  
    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql,
                $userEmail,
                $userPassword,
                $mysqli_real_escape_string, ($userName),
                $token);
  
    // Provo ad inserire i dati
    if (false == mysqli_query($connection, $sql))
    {
        return false;
    }
    // se sono riuscito ad inserire i dati,
    // ritorno l'ultimo user_id inserito  
    else
    {
        return mysqli_insert_id($connection);
    }
}

// Questa funzione controlla l'esistenza
// nel database di un utente con uno specifico indirizzo email
function userEmailExists($userEmail)
{
    // Apro una connessione con il database
    $connection = getConnection();
  
    // Conto il numero di utenti registrati con
    // l'indirizzo email specificato
    $sql = "SELECT user_id
            FROM user
            WHERE
                email = '%s' ";
  
    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql, $userEmail);
  
    // Eseguo la query sul database
    $result = mysqli_query($connection , $sql);
  
    // Se non ho trovato utenti oppure se si è
    // verificato un errore
    if (false == $result || mysqli_num_rows($result) == 0)
    {
        return false;
    }
    // Altrimenti vuol dire che ho trovato un utente
    // con l'indirizzo email specificato
    else
    {    
        return true;
    }
}

// Questa funzione cerca i dati di un utente
// in base al token specificato
function userFindByToken($token)
{
    // Apro una connessione con il database
    $connection = getConnection();
  
    // Cerco un utente con un certo token
    $sql = "SELECT *
            FROM user
            WHERE
                token = '%s'";
  
    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql, $token);
  
    // Eseguo la query sul database
    $result = mysqli_query($connection, $sql);
  
    // Se si è verificato un errore oppure non
    // ho trovato nessun utente
    if (false == $result || mysqli_num_rows($result) == 0)
    {
        return false;
    }
  
    // Ritorno i dati dell'utente trovato
    return mysqli_fetch_assoc($result);
}

// Questa funzione cerca i dati di un utente
// in base all'indirizzo email specificato
function userFindByEmail($userEmail)
{
    // Apro una connessione con il database
    $connection = getConnection();
  
    // Cerco un utente con un certo indirizzo email
    $sql = "SELECT *
            FROM user
            WHERE
                email = '%s'";
  
    // Assegno alla query i parametri da cercare
    $sql = sprintf($sqli, $userEmail);
  
    // Eseguo la query sul database
    $result = mysqli_query($connection, $sql);
  
    // Se si è verificato un errore oppure non
    // ho trovato nessun utente
    if (false == $result || mysqli_num_rows($result) == 0)
    {
        return false;
    }
  
    // Ritorno i dati dell'utente trovato
    return mysqli_fetch_assoc($result);
}

// Questa funzione cerca i dati di un utente
// in base ad un userId specificato
function userFindById($userId)
{  
    // Apro una connessione con il database
    $connection = getConnection();
  
    // Cerco un utente con un certo userId
    $sql = "SELECT *
            FROM user
            WHERE
                user_id = %d";
  
    // Assegno alla query i parametri da cercare
    $sql = sprintf($sqli, $userId);
  
    // Eseguo la query sul database
    $result = mysqli_query($connection, $sql);
  
    // Se si è verificato un errore oppure non
    // ho trovato nessun utente
    if (false == $result || mysqli_num_rows($result) == 0)
    {
        return false;
    }
  
    // Ritorno i dati dell'utente trovato
    return mysqli_fetch_assoc($result);
}

// Questa funzione serve per attivare l'account
// di un utente con un certo userId
function userActivate($userId)
{
    // Apro una connessione con il database
    $connection = getConnection();
  
    // Attivo l'utente impostando il campo
    // active a 1
    $sql = "UPDATE user
            SET active = 1, token = NULL
            WHERE
                user_id = %d";
  
    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql, $userId);
  
    // Eseguo la query sul database
    $result = mysqli_query($connection, $sql);
  
    // Se si è verificato un errore oppure nessun utente
    // � stato attivato
    if (false == $result || mysqli_affected_rows($connection) == 0)
    {
        return false;
    }
    // Altrimenti l'utente � stato attivato
    else
    {   
        return true;
    }  
}

// Questa funzione permette di settare il token
// di uno specifico utente, identificato dal suo userId
function userSetToken($token, $userId)
{
    // Apro la connessione al database
    $connection = getConnection();
  
    // Questa è la query di aggornamento
    $sql = "UPDATE user
            SET token = '%s'
            WHERE user_id = %d";
  
    // Assegno alla query i parametri da cercare
    $sql = sprintf($sqli, $token, $userId);
  
    // Eseguo la query
    $result = mysqli_query($connection, $sql);
  
    // Se si è verificato un errore oppure nessun token � stato settato
    // ritorno false
    if (false == $result || mysqli_affected_rows($connection) == 0)
    {
        return false;
    }
    // altrimenti ritorno true
    else
    {
        return true;
    }
}
 
qui c'è qualcosa di sbagliato
PHP:
  // Query per inserire i nuovi dati nel database
    $sql = "INSERT INTO user
                (email, password, name, token)
            VALUES
                ('%s', '%s', '%s', '%s') ";

    // Assegno alla query i parametri da cercare
    $sql = sprintf($sql,
                $userEmail,
                $userPassword,
                $mysqli_real_escape_string, ($userName),
                $token);
non ho mai usato questa sintassi ma di sicuro devi modificare la seconda parte in questo modo
PHP:
// Assegno alla query i parametri da cercare
    $sql = sprintf($sql,
                $userEmail,
                $userPassword,
                mysqli_real_escape_string($userName),
                $token);
perchè mysqli_real_escape_string è una funzione non una variabile
Il mio consiglio è di rileggere bene tutto domani a mente fresca e di studiare bene il php e la sua sintassi.
Buona notte e buon lavoro
 
ok va bene ovviamente domani con calma controllo perchè io ho preso da un file online infatti c'erano un po di errori quindi non saprei cosa c'è da corregere e questo il punto domani provo nel caso ti scrivo grazie mille per la pazienza buona notte
 
Buongiorno.
ho provato ad modifcare ma non va comquei come procedo?
ti rimetto il codice qui completto?
 

Discussioni simili