Visualizzazione dei risultati da 1 a 3 su 3

Discussione: confronto stringhe

  1. #1

    confronto stringhe

    Ho un problema con un confronto tra stringhe:
    Ho realizzato una piccola web-app che pesca delle domande da un database e le relative risposte.
    L'utente clicca sulla risposta che sceglie e questa viene passata via POST.
    La web-app poi confronta (prima con un === ma ora con strcmp) la stringa arrivata via POST con quella contenuta nel database ed incrementa il contatore del puntoggio.
    Solo che... alcune volte sbaglia!

    Non riesco a capire come mai! Prima ho pensato ai caratteri speciali o gli apostrofi, ma la cosa sembra non essere legata a loro!
    (dico sembra perchè molte risposte contenenti apostrofi sono marcate corrette!)

    Ci sono particolari attenzioni da prendere per confrontare una stringa letta dal database con una passata via POST??
    In alternativa qualche consiglio?

    Ecco il codice del punto in cui viene valutata la correttezza della risposta:
    Codice PHP:
    $ut_risposta =html_entity_decode($_POST['risposta'],ENT_QUOTES); // recupero il valore della risposta data
    $rispostamysql_query("SELECT risposta FROM Domande WHERE id = ".$id,$dbconnect); //recupero il valore della risposta
    $pescarisposta mysql_fetch_array($risposta);
    $real_rispostahtml_entity_decode($pescarisposta[0],ENT_QUOTES);
    if (
    strcmp($ut_risposta,$real_risposta)==0){ // se la risposta è corretta...
        
    $_SESSION['punteggio']++; // aumento il punteggio

    Can You See Curtains? Then Isn't Windows!

  2. #2
    Quando fallisce metti un codice che visualizzi il risultato di var_dump() delle due variabili che stai confrontando e posta qui il risultato.

  3. #3
    allora:
    ho aggiunto:
    var_dump($ut_risposta);
    var_dump($real_risposta);

    ed il risultato (su una risposta creata ad oc) è stato questo:

    string(10) "l\'Un mèsà" string(9) "l'Un mèsà"

    A quanto pare devo far eliminare quegli slash che fanno l'escape degli apici!
    Maledetto server con i magic quotes attivi!!! (ecco perchè sul server di prova non dava alcun problema!)
    Ora ho messo:
    Codice PHP:
    if (strcmp(stripslashes($ut_risposta),$real_risposta)==0){ 
    o mi conviene stripparli da tutte e due?
    Codice PHP:
    if (strcmp(stripslashes($ut_risposta),stripslashes($real_risposta))==0){ 
    o ancora...
    Codice PHP:
    if (stripslashes($ut_risposta)===$real_risposta){ 
    Secondo voi cosa è meglio?

    Ah, ho tolto gli slash solo da li perchè poi devo mettere il tutto in database quindi mi servono!
    Can You See Curtains? Then Isn't Windows!

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.