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

    Case sensitive mi causa problemi

    Ciao a tutti,
    in un portale dove eseguo il login non ha importanza se scrivo il mio username con lettere maiuscole o minuscole, il login viene comunque fatto.
    Una volta effettuato il login salvo la sessione tramite l'username, per intenderci, se l'autenticazione va a buon fine salvo l'username nella variabile di sessione $_SESSION[valid_user].
    Il mio problema, nello specifico, sta nella visualizzazione dei messaggi privati nel sito, in quanto ho deciso di mettere un controllo in modo tale che quel messaggio può essere letto soltanto dal destinatario e non dai furbetti che magari cambiano l'id nel link. Qua quindi nasce il problema, il sistema verifica se combacia la variabile $_SESSION[valid_user] con il campo Destinatario della riga nel database e se sono uguali stampa altrimenti da un messaggio di errore.

    Però se un utente x mi scrive un messaggio privato e come nome destinatario mette admin io lo vedo tranquillamente, se invece scrive come destinatario Admin io mi ritrovo il messaggio nella lista dei messaggi ricevuti, ma al momento di aprirlo mi da quel messaggio di errore.

    Ad esempio il mio username è Admin e provo a registrare un altro account con username admin il sistema mi dice che è già esistente.

    Posto qualche pezzo di codice nella speranza che qualcuno possa aiutarmi.

    Questa è la parte della casella dei messaggi ricevuti, dove vedo tutti i messaggi indipendentemente se il mittente ha scritto il mio nome con la 'a' con la 'A'.
    Codice PHP:
    if(($page=="mypm" && $act=="received") || ($page=="mypm" && $act=="")){                    ?>                        <br /><br />                        <?                        $q="SELECT * FROM pm WHERE a='$_SESSION[valid_user]' AND dest_del=0 ORDER BY letto ASC , data DESC";                        $est=mysql_query($q);                        $num=mysql_num_rows($est);                        if($num<1){                            echo "Nessun messaggio ricevuto.";                        }else{                            $i=0;                            ?>                            <table align="center">                                <tr>                                    <td align="center" colspan="4">                                        Messaggi Ricevuti                                    </td>                                </tr>                                <tr>                                    <td align="center">                                        Oggetto                                    </td>                                    <td align="center">                                        Da                                    </td>                                    <td align="center">                                        Data                                    </td>                                    <td align="center">                                        Elimina                                    </td>                                </tr>                            <?                            while ($i<$num){                                $pm_id    mysql_result($est,$i,"id");                                $da        mysql_result($est,$i,"da");                                $a        mysql_result($est,$i,"a");                                $oggettomysql_result($est,$i,"oggetto");                                $corpo    mysql_result($est,$i,"corpo");                                $data    mysql_result($est,$i,"data");                                $data    strtotime($data);                                $il        date('d/m',$data);                                $alle    date('H:i',$data);                                $delcomm="delcomm".$i;                                ?>                                                                <tr>                                    <td>
    <? // QUESTO è IL LINK CHE PORTA ALLA PAGINA DI VISUALIZZAZIONE DEL MESSAGGIO ?>                                        <a href="?page=mypm&act=read&id=<? print($pm_id); ?>" >                                            <? echo $oggetto?>                                        </a>                                    </td>                                    <td align="center" >                                        <? echo $da?>                                    </td>                                    <td align="center" >                                        <? echo "Il ".$il." alle ".$alle?>                                    </td>                                    <td align="center">                                        <form style="margin: 0;" method=post action="?page=mypm">                                            <input style="border:0;" type="image" src="image/del.png" name="<? echo $delcomm?>" value="Elimina" onClick="return confirm('Questo messaggio sta per essere cancellato. Confermare?');">                                        </form>                                    </td>                                </tr>                                                                <?                                if(($_POST[$delcomm])=="Elimina"){                                    $q_check_mittente_del="SELECT mitt_del FROM pm WHERE id=$pm_id";                                    $r_check_mittente_del=mysql_query($q_check_mittente_del);                                    $check_mittente_del=mysql_result($r_check_mittente_del,0,"mitt_del");                                    if($check_mittente_del==0){                                        $set_del="UPDATE pm SET dest_del=1 WHERE id=$pm_id";                                        mysql_query($set_del);                                        header("refresh:0;");                                    }else{                                        $del="DELETE FROM pm WHERE id=$pm_id ";                                        mysql_query($del);                                        header("refresh:0;");                                    }                                }                                $i++;                            }                            ?>                            </table>                            <?                        }                        ?>                        <br /><br />                    <?                    }
    E questa è la parte della visualizzazione dove, invece, mi crea problemi il case-sensitive
    Codice PHP:
    if($page=="mypm" && $act=="read"){                        $q_msg="SELECT * FROM pm WHERE id=$_GET[id]";                        $est=mysql_query($q_msg);                        $num=mysql_num_rows($est);                        if($num<1){                            echo "Questo messaggio non esiste oppure &egrave; stato cancellato.";                        }else{                            $pm_id    = mysql_result($est,0,"id");                            $da        = mysql_result($est,0,"da");                            $a        = mysql_result($est,0,"a");                            $oggetto= mysql_result($est,0,"oggetto");                            $corpo    = mysql_result($est,0,"corpo");                            $data    = mysql_result($est,0,"data");                            $data    = strtotime($data);                            $il        = date('d/m',$data);                            $alle    = date('H:i',$data);                            $anno    = date('/Y',$data);                            $letto    = mysql_result($est,0,"letto");                                                        if($_SESSION[valid_user]!=$a)                            echo "Non hai i permessi per visualizzare questa pagina.";                        else{                                                                ?>                                    <center>                                        <?                                            echo $corpo;                                        ?>                                    </center>                                <?                            }                        }                    }
    Ultima modifica di frenkytribe; 25-10-2013 a 14:21

  2. #2
    Ho grezzamente risolto scrivendo
    Codice PHP:
     if((strtolower($a)==strtolower($_SESSION['valid_user']))) 

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Metti in sessione l'id e confronta quello con l'id nel db (in pratica la stessa cosa che fai ora con l'username, ma con l'id).
    I "furbetti" possono cambiare l'id nel link, ma non quello in sessione.

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.