Spazio per commenti

  • Creatore Discussione Creatore Discussione Altutto
  • Data di inizio Data di inizio

Altutto

Utente Attivo
30 Set 2013
262
0
16
stubborn.altervista.org
PHP:
<?php
include("../conf.php");
//[...]
echo '<br><div class="rotondo"><h1 style="color:black;">Commenti</h1>';
//se il cookie non c'è, mostro un messaggio che invita a registrarsi
if(!isset($_COOKIE['altutto_username'])){echo '<i>Registrati per commentare</i><br>';}
//se il cookie c'è, controllo la password
else{$utente = $_COOKIE['altutto_username'];
$password = $_COOKIE['altutto_password'];
$queryy =  'SELECT * FROM utenti WHERE username="'.$utente.'" and password="'.$password.'"';
$query = mysqli_query($connessione, $queryy);
//se i dati che ci sono nei cookies sono sbagliati, li cancello
if(mysqli_num_rows($query)=="0"){setcookie('altutto_username', NULL, time()-11, "./", '//miosito,nospam', 0);setcookie('altutto_password', NULL, time()-11, "./", '//miosito,nospam', 0);echo 'Errore di autenticazione. Per piacere, riprova a loggarti.';}
//Altrimenti, se il risultato di utenti con quei dati è uno e uno solo, mostro la textarea
else if(mysqli_num_rows($query)=="1"){$usern=$_COOKIE['altutto_username'];
echo '<p>Stai commentando a nome di: <b>'; 
echo $usern;
 echo '</b></p><form name="chat" method="post"  action="'.$_GET['articolo'].'.html">
<textarea name="messaggio" id="messaggio"  style="width:100%; height:10%; font-family:Arial,Verdana,Geneva;"></textarea>
<input type="submit" class="button" value="Invia"></form>';
//Se c'è un messaggio da inviare
  if(isset($_POST['messaggio'])){//[...]Setto delle variabili
   $query = "INSERT INTO tb_chat (user_chat, mex_chat, data, id_articolo)     VALUES ('$usern','$mex_chat','$datta','$idartic')";    
mysqli_query($connessione,$query);  
}
}
//Se, per qualche strano motivo, i risultati di utenti con quei dati sono più di uno, mostro un messaggio di errore
else{echo 'Uhm... Sembra che ci sia qualche problema di autenticazione!';}}
//[...] Parte di estrazione dei commenti
?>
Ho un problema con questo script: nonostante abbia impostato entrambi i cookies altutto_username e altutto_password sul mio computer, mi appare il messaggio che invita a registrarsi.
Sapreste dirmi perchè?
 
ciao
per prima cosa metti un var_dump per verificare
PHP:
<?php
include("../conf.php");
//[...]
echo '<br><div class="rotondo"><h1 style="color:black;">Commenti</h1>';
//se il cookie non c'è, mostro un messaggio che invita a registrarsi
var_dump($_COOKIE['altutto_username']);//poi lo togli o lo commenti
//attento pero che il var_dump è un output html quindi il setcookie ti darà probabilmente errore
if(!isset($_COOKIE['altutto_username'])){echo '<i>Registrati per commentare</i><br>';}
//....
?>
 
Si, è scritto giusto.
Posto di seguito i due files per il login, magari il problema è lì (anche se i cookies vengono salvati).
Il codice per i commenti è in ./test/blog, quelli che riporto ora sono in ./test/users.
index.php
PHP:
<?php
include("../conf.php");
session_start();
echo $_SESSION['errore_login'];
unset($_SESSION['errore_login']);
if(!isset($_COOKIE['altutto_username'])){//il cookie non c'è e il form è vuoto mostra il form di login
echo '<form action="check.php" method="post"><b>Nickname o indirizzo email</b><input type="text" id="usernaame" name="usernaame"><br><b>Password</b><input type="password" id="passworrd" name="passworrd"><br><input type="submit" value="entra"></form><br><button class="button">Non hai ancora un account? Registrati!</button>
';}
else{//il cookie c'è
//controllo la password
$utente = $_COOKIE['altutto_username'];
$password = $_COOKIE['altutto_password'];
$queryy =  'SELECT * FROM utenti WHERE username="'.$utente.'" and password="'.$password.'" LIMIT 1';
$query = mysqli_query($connessione, $queryy);
//se è corretta, mostro il profilo personale
if(mysqli_num_rows($query)=="0"){setcookie('altutto_username', $utente, time()-11, "./", 'altutto.altervista.org', 0);
setcookie('altutto_password', $password, time()-11, "./", 'altutto.altervista.org', 0);
echo '<b style="color:red;">Attenzione!</b><br>Abbiamo rilevato un tentativo di pishing da parte di questo terminale.<br>Al fine di tutelare la sicurezza degli utenti, abbiamo salvato alcune informazioni sulle tue ultime azioni su altutto e bloccato temporaneamente l\'account al quale hai tentato di accedere. Per sbloccarlo, sarà sufficiente cliccare sul link che abbiamo inviato via email al suo proprietario: se si tratta di un errore, non preoccuparti, basterà cliccare sul link per annullare la procedura di controllo.</b>';}
else{
echo 'I profili non sono ancora disponibili';}
}
?>

check.php
PHP:
<?php
include("../conf.php");
$utente = htmlspecialchars(addslashes($_POST['usernaame']));
//criptazione da modificare
$password = htmlspecialchars(addslashes(md5(sha1($_POST['passworrd']))));
$query = mysqli_query($connessione, 'SELECT * FROM utenti WHERE username="'.$utente.'" and password="'.$password.'"');
if(mysqli_num_rows($query)=="1"){
setcookie('altutto_username', $utente, time()+2629743);
setcookie('altutto_password', $password, time()+2629743);
}
else if(mysqli_num_rows($query)=="0"){session_start();
$_SESSION['errore_login']="Errore: i dati che hai inserito non sono corretti.";}
else{session_start();
$_SESSION['errore_login']="Uhm... Sembra che ci sia qualche problema! Abbiamo raccolto alcuni dati su questo tentativo di log-in. Al fine di preservare la sicurezza degli utenti, potremmo aver bloccato temporaneamente questo dispositivo o il tuo account, ma non temere, lo sbloccheremo non appena avremo analizzato il caso. Generalmente, questo avviene entro 24 ore, in caso di ritardi, ti invitiamo a CLICCARE QUI (link non ancora disponibile) per sollecitarci. <br> Ci scusiamo per il disagio. <br> Al termine delle operazioni, ti saranno attribuiti 100 punti.<br>";}
echo '<script> location.href="index.php"; </script>';
header("location: index.php");
?>
 
In ogni caso, ho capito perchè non mi leggeva il cookie: scrivendo
PHP:
setcookie('altutto_username', $utente, time()+2629743);
Impostavo il cookie rendendolo valido solo per la cartella corrente, mentre invece scrivendo
PHP:
setcookie('altutto_username', $utente, time()+2629743,"/");
Funziona :rolleyes::)
 

Discussioni simili