Visualizzazione risultati 1 fino 4 di 4

Discussione: Script di registrazione che non funziona

  1. #1
    Guest

    Predefinito Script di registrazione che non funziona

    Buona sera, ho da poco inserito la verifica del codice captcha alla pagina di registrazione come potete vedere qui ma la registrazione non va a buon fine e non riesco a capire il perchè, questo è lo script:
    Codice PHP:
    <?php
    include('config.php');
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <?php
    //We check if the form has been sent
    if(isset($POST['cpt'], $_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['avatar']) and $_POST['username']!='')
    {
    //We remove slashes depending on the configuration
    if(get_magic_quotes_gpc())
    {
    $_POST['cpt'] = stripslashes($_POST['cpt']);
    $_POST['username'] = stripslashes($_POST['username']);
    $_POST['password'] = stripslashes($_POST['password']);
    $_POST['passverif'] = stripslashes($_POST['passverif']);
    $_POST['email'] = stripslashes($_POST['email']);
    $_POST['avatar'] = stripslashes($_POST['avatar']);
    }
    //Codice di prova
    if($_SESSION['CAPTCHA']!=$_POST['cpt'])
    {
    //We check if the two passwords are identical
    if($_POST['password']==$_POST['passverif'])
    {
    //We check if the password has 6 or more characters
    if(strlen($_POST['password'])>=6)
    {
    //We check if the email form is valid
    if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
    {
    //We protect the variables
    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);
    $email = mysql_real_escape_string($_POST['email']);
    $avatar = mysql_real_escape_string($_POST['avatar']);
    //We check if there is no other user using the same username
    $dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
    if(
    $dn==0)
    {
    //We count the number of users to give an ID to this one
    $dn2 = mysql_num_rows(mysql_query('select id from users'));
    $id = $dn2+1;
    //We save the informations to the databse
    if(mysql_query('insert into users(id, username, password, email, avatar, signup_date) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", "'.time().'")'))
    {
    //We dont display the form
    $form = false;
    ?>
    <div class="message">You have successfuly been signed up. You can log in.<br />
    <a href="connexion.php">Log in</a></div>
    <?php
    }
    else
    {
    //Otherwise, we say that an error occured
    $form = true;
    $message = 'An error occurred while signing up.';
    }
    }
    else
    {
    //Otherwise, we say the username is not available
    $form = true;
    $message = 'The username you want to use is not available, please choose another one.';
    }
    }
    else
    {
    //Otherwise, we say the email is not valid
    $form = true;
    $message = 'The email you entered is not valid.';
    }
    }
    else
    {
    //Otherwise, we say the password is too short
    $form = true;
    $message = 'Your password must contain at least 6 characters.';
    }
    }
    else
    {
    //Otherwise, we say the passwords are not identical
    $form = true;
    $message = 'The passwords you entered are not identical.';
    }
    }
    else
    {
    //Otherwise
    $form = true;
    $message = 'Il codice captcha è errato.';
    }
    }
    else
    {
    $form = true;
    }
    if(
    $form)
    {
    //We display a message if necessary
    if(isset($message))
    {
    echo
    '<div class="message">'.$message.'</div>';
    }
    //We display the form
    ?>
    <form action="register.php" method="post">
    Please fill the following form to sign up:<br />
    <div class="center">
    <label for="username">Username</label><input type="text" name="username" value="<?php if(isset($_POST['username'])){echo htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
    <label for="password">Password<span class="small">(6 characters min.)</span></label><input type="password" name="password" /><br />
    <label for="passverif">Password<span class="small">(verification)</span></label><input type="password" name="passverif" /><br />
    <label for="email">Email</label><input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
    <label for="avatar">Avatar<span class="small">(optional)</span></label><input type="text" name="avatar" value="<?php if(isset($_POST['avatar'])){echo htmlentities($_POST['avatar'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
    <img src="captcha.php" alt="CAPTCHA">
    <label for="captcha">Captcha<span class="small"></span></label><input type="text" name="cpt" value="" /><br />
    <input type="submit" value="Sign up" />
    </div>
    </form>
    <?php
    }
    ?>
    </body>
    </html>
    se invece provo il codice captcha da solo funziona tutto senza problemi come potete vedere qui lo scrip per la verifica della pagina è questo:
    Codice PHP:
    <? session_start(); ?>

    <form action="example.php" method="post">
    <img src="captcha.php" /><br/><br/>
    Inserisci il codice che vedi: <input type="text" name="cpt" /> <input type="submit" value="Check" />
    </form>

    <?php

    if(isset($_POST['cpt']) && !empty($_POST['cpt']))
    if(
    $_SESSION['CAPTCHA'] != strtolower($_POST['cpt']))
    echo
    "<strong>Codice errato!</strong>";
    else
    echo
    "Ok";

    ?>

  2. #2
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,752

    Predefinito

    Dentro "config.php" c'é la session_start() ?

    Prova a controllare cosa contengono $_SESSION['CAPTCHA'] e $_POST['cpt'] del tuo script (con echo o var_dump()).

    Ciao!

  3. #3
    Guest

    Predefinito

    Si, dentro config.php c'è la session_start(), ed ho provato anche a vedere cosa contengono $_SESSION['CAPTCHA'] e $_POST['cpt'] ed entrambe contengono l'ultimo valore digitato, forse è proprio qui che sbaglio ma non capisco dove visto che lo script da solo funziona beniss

  4. #4
    Guest

    Predefinito

    Finalmente ho risolto il problema, era solo un errore di distrazione ho scritto $POST['cpt'] invece di scrivere $_POST['cpt']

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •