Visualizzazione risultati 1 fino 21 di 21

Discussione: PHP: if $1 diverso da $2

  1. #1
    Guest

    Predefinito PHP: if $1 diverso da $2

    Avrei bisogno di un'aiuto, ho un problema legato al settaggio delle sessioni e dei cookie: I cookie e le sessioni non vengono settati se c'è stato un qualunque output prima quindi io volevo fare in modo che lo script che esegue il login verifichi prima se certe condizioni sono false, come posso fare?

    Io prima usavo questo script:

    Codice PHP:
    if ($row['password'] == $password {

    fai questo

    }
    COme dovrei modificarlo per far si che verifichi se sono diverse?

  2. #2
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    L'operatore necessario è !=

    E qui trovi la lista completa: http://php.net/manual/en/language.op...comparison.php

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da ilmiocaos Visualizza messaggio
    I cookie e le sessioni non vengono settati se c'è stato un qualunque output prima
    Davvero? non lo sapevo...

    mmm

    se usi questo non le te le setta le sessioni?

    Codice PHP:
    if ($row['password'] != $password {

    //contnuo il codice

    }else{

    print
    "Passwoed password errata...";

    }
    Ultima modifica di zomer : 23-01-2010 alle ore 16.11.01

  4. #4
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    C'è anche un errore di sintassi (la parentesi finale)
    Codice PHP:
    if ($row['password'] !== $password) {
    ...
    }
    ?
    Ultima modifica di darkwolf : 23-01-2010 alle ore 16.12.49

  5. #5
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Citazione Originalmente inviato da zomer Visualizza messaggio
    Davvero? non lo sapevo...

    mmm

    se usi questo non le te le setta le sessioni?
    Infatti i cookie non vengono settati se è stato inviato un output prima

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da mycarlo Visualizza messaggio
    Infatti i cookie non vengono settati se è stato inviato un output prima
    se entra nel ramo else no.
    Dai un occhiata qui: http://php.html.it/articoli/leggi/84...lo-delloutput/

    ciao

    edit:
    Citazione Originalmente inviato da darkwolf Visualizza messaggio
    C'è anche un errore di sintassi (la parentesi finale)
    Codice PHP:
    if ($row['password'] !== $password) {
    ...
    }
    ?
    anche un = in più
    Ultima modifica di Xsescott : 23-01-2010 alle ore 16.51.13

  7. #7
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Citazione Originalmente inviato da Xsescott Visualizza messaggio
    più
    Veramente l'uguale in più l'ho messo di proposito (identical) :/

    Codice PHP:
    $row['password'] = "7";
    $password = "000000000007";
    if (
    $row['password'] != $password) {
    echo
    "errata";
    }else{
    echo
    "ok";
    }
    darà ok;
    Codice PHP:
    $row['password'] = "7";
    $password = "000000000007";
    if (
    $row['password'] !== $password) {
    echo
    "errata";
    }else{
    echo
    "ok";
    }
    darà errata.
    -
    Trattandosi di password direi che è praticamente impossibile che con "uguale" (=) ci siano dei problemi ma... credo che con "identical" sia più corretto :P
    -
    Edit: http://www.php.net/manual/en/languag...ison.php#43754
    Ultima modifica di darkwolf : 23-01-2010 alle ore 17.02.02

  8. #8
    Guest

    Predefinito

    Da premettere che non conoscevo questo operatore, però mi sorge una domanda:
    se io metto un numero tra doppi apici, l'inteprete php dovrebbe memorizzarlo come stringa giusto??
    quindi sei sicuro che sia esattamente come dici tu? lo vedo più sensato senza i doppi apici, quindi interpetandolo come un intero a n bit :) bho però posso sbagliarmi!:P

  9. #9
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Leggi "credo" :)
    Insomma, no, non ne sono sicuro e visto che ci siamo non mi dispiacerebbe sentire un terzo parere

  10. #10
    Guest

    Predefinito

    Citazione Originalmente inviato da darkwolf Visualizza messaggio
    Leggi "credo" :)
    Insomma, no, non ne sono sicuro e visto che ci siamo non mi dispiacerebbe sentire un terzo parere
    ho letto, effettivamente è come dici tu.
    il problema reale è che io ho sempre pensato che per php tutto quello che stà tra i doppi apici è interpretato come stringa indi per cui un numero messo tra doppi apici risulta comunque di tipo stringa per l'interprete e quindi su due stringhe di lunghezza diversa sarebbe potuto bastare un !=, ma non è cosi, quindi mi chiedo se è proprio il fatto che comunque php un numero senza lettere messo tra doppi apici lo interpreta con un numero intero vero e proprio alla fine

  11. #11
    Guest

    Predefinito

    Grazie mille a tutti per l'aiuto, ma qualcuno di voi ha mai fatto una sessione di login, se si come ha risolto questo problema?

  12. #12
    Guest

    Predefinito

    io lo fatta ma non uso i cookie uso solo le sessioni...

  13. #13
    Guest

    Predefinito

    le metti prima di ogni cosa e verifichi che le condizioni siano vere?

  14. #14
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Citazione Originalmente inviato da ilmiocaos Visualizza messaggio
    le metti prima di ogni cosa e verifichi che le condizioni siano vere?
    Per quanto riguarda le sessioni l'unica cosa di cui devi preoccuparti è avviarle prima di qualsiasi output (session_start()), poi puoi usarle come vuoi (mentre i cookie sono diversi).

    Codice PHP:
    <?php
    session_start
    ();

    echo
    "output";

    $_SESSION["sessione"] = "valore"; // funziona
    ?>
    Se session_start() si trova dopo un output le sessioni non funzioneranno
    Ultima modifica di mycarlo : 24-01-2010 alle ore 00.19.08

  15. #15
    Guest

    Predefinito

    Ma sbaglio o non posso desettarle dopo un output?

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

    Predefinito

    si, puoi settarle; l'importante è che metti il session_start() prima di pogni altra cosa; perché infatti agisce sugli header della pagina e non sul contenuto.

    Ciao!

    EDIT: avevo perso una D

    Cosa indenti con desettarle?

    EDIT2:

    Intendi Resettarle? ..ovvero DISTRUGGERE una sessione?

    Usa session_unset();
    oppure session_destroy(); per eliminare tutte le variabili di sessione.
    Leggi qui.
    Ultima modifica di alemoppo : 24-01-2010 alle ore 00.36.17

  17. #17
    Guest

    Predefinito

    Intendo l'utilizzo della funzione unset() su una sessione

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

    Predefinito

    appunto guarda sopra. Comunque ricordo che mi funzionava anche unset() sulle sessioni, ma quelle che ti ho scritto sopra sono specifiche, anche se session_unset() è obsoleta.

    Ciao!
    Ultima modifica di alemoppo : 24-01-2010 alle ore 01.04.50

  19. #19
    Guest

    Predefinito

    Ma anche questi comandi vanno espressi prima di un output?

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

    Predefinito

    no!... anche dopo

  21. #21
    Guest

    Predefinito

    Comunque mi sento di fare una piccola correzione. I cookie e le sessioni non sono due sistemi che si devono sostituire, ma complementari. Infatti le sessioni funzionano comunque grazie ai cookie. Che poi le prime siano più sicure dei secondi è semplicemente dovuto al fatto che le sessioni sono dei file di testo che vengono modificati sul sistema ospitante PHP, e non sul computer del visitatore, che quindi non può modificarli.

Regole di scrittura

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