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'.
E questa è la parte della visualizzazione dove, invece, mi crea problemi il case-sensitive
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'.
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");
$oggetto= mysql_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
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 è 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>
<?
}
}
}