Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    spiegazione per uno script

    Sono alle prima armi in php sto studiando come funziona questo script di registrazione pero non ho capito cosa serve :
    -nello script c e $username = isset($_POST['username']) ? clear($_POST['username']) : false;
    cosa serve clear($_POST['username'] .
    _cosa serve il like elseif(mysql_num_rows(mysql_query("SELECT * FROM users WHERE username LIKE '$username'")) > 0) {
    grazie per l aiuto
    ------------------------------------------------------------------------------------------------------
    <?php
    include('core.php');
    if(isset($_POST['register'])) {
    $username = isset($_POST['username']) ? clear($_POST['username']) : false;
    $password = isset($_POST['password']) ? clear($_POST['password']) : false;
    $email = isset($_POST['email']) ? clear($_POST['email']) : false;
    if(empty($username) || empty($password) || empty($email)) {
    echo 'Riempi tutti i campi.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } elseif(strlen($username) > 16) {
    echo 'Username troppo lungo. Massimo 16 caratteri.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } elseif(strlen($password) < 6 || strlen($password) > 20) {
    echo 'Lunghezza della password non valida. Minimo 6 caratteri e massimo 20.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo 'Indirizzo email non valido.';
    } elseif(strlen($email) > 60) {
    echo 'Lunghezza dell\'indirizzo email non valida. Massimo 60 caratteri.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } elseif(mysql_num_rows(mysql_query("SELECT * FROM users WHERE username LIKE '$username'")) > 0) {
    echo 'Username già in uso. Sei pregato di sceglierne un altro.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } elseif(mysql_num_rows(mysql_query("SELECT * FROM users WHERE email LIKE '$email'")) > 0) {
    echo 'Indirizzo email già in uso. Sei pregato di sceglierne un altro.<br /><br /><a href="javascript:history.back();">Indietro</a>';
    } else {
    $password = md5($password);
    $ip = $_SERVER['REMOTE_ADDR'];
    if(mysql_query("INSERT INTO users (username, password, email, reg_ip, last_ip, reg_date) VALUES ('$username','$password','$email','$ip','$ip',UNIX _TIMESTAMP())")) {
    echo 'Registrazione andata a buon fine.';
    } else {
    echo 'Errore nella query: '.mysql_error();
    }
    }
    } else {
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <label>Username: <input type="text" name="username" required maxlength="16" /></label><br />
    <label>Password: <input type="password" name="password" required maxlength="20" /></label><br />
    <label>Email: <input type="email" name="email" required maxlength="60" /></label><br /><br />
    <input type="submit" name="register" value="Registrati" />
    </form>
    <?php
    }
    ?>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Da dove lo hai preso questo script?
    Penso che clear() sia una funzione definita da qualche parte, ma non essendo nativa di PHP non so cosa possa fare, ad intuito controlla che non ci siano cose strane nelle variabili che gli vengono passate per evitare ad esempio mysql injection, oppure semplicemente fa un trim() e qualche altra cosa di simile.
    Cerca nel codice dove si trova la funzione clear() e vedi cosa fa.

    Per i LIKE... mi sembra una cosa un po' stupida usare LIKE per una registrazione, sarebbe stato più corretto usare WHERE username='$username', anche perché il LIKE senza l'uso di % fa esattamente la stessa cosa.

  3. #3
    la funzione e questa
    function clear($var) {
    return addslashes(htmlspecialchars(trim($var)));
    }
    il like fa diventare key insensitive pero boh

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Come intuito la funzione clear() fa appunto una pulizia della stringa, per capire cosa fa, basta che guardi la documentazione di PHP, sono tutte funzioni native.

    Per fare una ricerca case sensitive si fa
    WHERE BINARY(username)='$username'

    comunque va beh...

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.