Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Problem $_GET

  1. #1

    Problem $_GET

    Salve, ho questo problema, per farla breve faccio un controllo dove se $_GET['action'] non è email, password o profile manda un messaggio di errore, altrimenti fa le regolari azioni (vengono fatte tramite switch($_GET['action'])).. Praticamente però qualsiasi cosa scrivo ad action, sia email che password mi da quel messaggio di errore, come mai? Questi sono i codici (scusate se sono lunghi, li posto tutti nel caso in cui qualcuno riscontri altri errori).

    PS: Negli array $da può apparirvi errore ma non è così, ho messo uno slash prima di ' , solo che me lo legge come codice da interpretare..

    Codice PHP:
    <?

    $action1 
    $_GET['action'];
    $da = array('"','<','>','_','\'',',');
    $a = array('','','','','','');

    $action str_replace($da$a$action1);

    if(
    $action != 'profile' || $action != 'email' || $action != 'password') {
    echo 
    '<span id="error_logout">ERRORE!</span> Devi selezionare un\' azione valida.';
    } else {
    include(
    'settings.php');
    $username $_SESSION['username'];
    $select mysql_query("SELECT * FROM membri WHERE username='$username'");
    $campi mysql_fetch_array($email_select);
    $email $campi['email'];
    $data_registrazione $campi['data_registrazione'];
    $ultimo_login $campi['ultimo_login'];
    switch(
    $action) {
    case 
    profile:
    echo 
    '[b]Username:[/b] '.$username.'
    [b]Email:[/b] '
    .$email.'
    [b]Data iscrizione:[/b] IN AGGIORNAMENTO..
    [b]Ultimo login:[/b] IN AGGIORNAMENTO..

    '
    ;
    break;
    case 
    password:
    echo 
    '<form action="" method="POST"><span class="name">Password corrente:</span> <input type="password" name="password_corrente" />

    <span class="name">Nuova password:</span> <input type="password" name="new_password" />
    <span class="name">Ripeti password:</span><input type="password" name="new_password_check" />

    <input type="submit" value="Cambia passowrd" name="cambiata" /></form>
    '
    ;

    $password_corrente1 $_POST['password_corrente'];
    $new_password1 $_POST['new_password'];
    $new_password_check1 $_POST['new_password_check'];
    $cambiata $_POST['cambiata'];

    $da = array('\'','"','<','>','_');
    $a = array('','','','','');

    $password_corrente str_replace($da$a$password_corrente1);
    $new_password str_replace($da$a$new_password1);
    $new_password_check str_replace($da$a$new_password_check);
    $password_inserita MD5($password_corrente);

    $pswd mysql_query("SELECT password FROM membri WHERE username='$username'") or die (mysql_error());
    $pswd_fetch mysql_fetch_array($pswd) or die (mysql_error());
    $password_attuale $pswd_fetch['password']; 

    if(isset(
    $cambiata)) {
    if(empty(
    $password_corrente) || empty($new_password) || empty($new_password_check)) {
    echo 
    '<span id="error_logout">ERRORE!</span> Devi riempire tutti i campi.';
    } elseif(
    $password_inserita != $password_attuale) {
    echo 
    '<span id="error_logout">ERRORE!</span> La password immessa non corrisponde con l\' attuale.';
    } elseif(
    $new_password != $new_password_check) {
    echo 
    '<span id="error_logout">ERRORE!</span> La conferma della nuova password non coincide con quella da te inserita';
    } else {
    mysql_query("UPDATE membri SET password='$password_inserita' WHERE username='$username'") or die (mysql_error());
    echo 
    '<span id="ok_logout">FATTO!</span> Password cambiata con successo!';
    }
     }
    break;
    case 
    email:
    echo 
    'La tua email corrente è: [b]'.$email.'

    '
    ;
    echo 
    '<form action="" method="POST"><span class="name">Nuovo indirizzo email:<input type="email" name="email" />

    <input type="submit" value="Cambia email" name="cambiata" /></form>
    '
    ;

    $email_inserita1 $_POST['email'];
    $cambiata $_POST['cambiata'];
    $da = array('\'','"','<','>');
    $a = array('','','','');

    $email_inserita str_replace($da$a$email_inserita1);

    if(isset(
    $cambiata)) {
    if(empty(
    $email_inserita)) {
    echo 
    '<span id="error_logout">ERRORE!</span> Devi inserire un\' indirizzo email.';
    } else {
    mysql_query("UPDATE membri SET email='$email_inserita' WHERE username='$username'");
    echo 
    '<span id="ok_logout">FATTO!</span> Indirizzo email cambiato con successo!';
    }
     }
    break;
    default:
    echo 
    '[b]Username:[/b] '.$username.'
    [b]Email:[/b] '
    .$email.'
    [b]Data iscrizione:[/b] IN AGGIORNAMENTO..
    [b]Ultimo login:[/b] IN AGGIORNAMENTO..

    '
    ;
      }
       }
    ?>
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    Perchè è sbagliato concettualmente l'if che fai.

    Esempio: se metti action = email e poi controlli le tre condizioni dell'if avrai che:

    1) $action != 'profile' ---> true
    2) $action != 'email' ----> false
    3) $action != 'password' ----> true

    quando poi vai a fare l'or di queste ti verrà sempre true, perchè ce n'è sempre almeno una che è vera...

    devi quindi strutturare l'if in un altro modo...
    Jekkil

  3. #3
    Scusa una cosa....ma la logica è che se $_GET["action"] è una delle 3 opzioni che tu dai (profile, email, password) allora vai avanti, altrimenti se è diversa da queste 3 dai errore...giusto??? Se è così prova a cambiare l'or con un and

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    esatto!!

    Non volevo dargli proprio tutta la soluzione, ma volevo farcelo arrivare da solo

    Vabbè, comunque è proprio quello che bisogna correggere
    Jekkil

  5. #5
    Sì in effetti ci ho pensato questa mattina appena svegliato che se una delle azioni è vera le altre saranno false e darà sempre quel messaggio.. Grazie comunque lol

    (Notare cosa vado a pensare di mattina)
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

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.