Aiuto per le sessioni

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Si ti racconto dopo pranzo. Ekkime. Allora. Visto e considerato che non mi piaceva quando vado a fare run la visualizzazioe del link "riservata", che poi clicco e mi va direttamente sulla pagina di accesso username e password da inserire, volevo togliere il link e visualizzare direttamente la pagina di accesso. Tutto qua. per il resto funziona magnificamente. Ora ti mando gli sreen di quello che viene visualizzato.
 
Ultima modifica:

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Senti vorrei una spiegazione. Ho questo pezzo di codice fatto da te.

PHP:
if (!isset($_SESSION['p']) || md5($_SESSION['p']) != $_GET['p']) {
   	//questo vuol dire che è stato tentato un accesso diretto tipo http://www.mio_sito.it/login_2.php
	$_SESSION=array();//distruggo le sessioni e rimando alla index
   	header('location: index.php');
        //header('location: login.php');
   	exit();
}

Come puoi vedere, ci sono due header. Se lascio quello con index va tutto bene. Se poco poco modifico e metto quello con il login, s'inkazza come na belva. Ho bisogno di far partire direttamente con la maschera d'accesso d'inserimento dati. Ieri c'ero riuscito fino ad un certo punto e poi non mi ricordo più :( Ecco che errore mi da. Te le motto come screen. Come posso risolvere ???? Aspetto come al solito i tuoi consigli. Grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa ma non capisco cosa vuoi fare,
PHP:
<?php
if (!isset($_SESSION['p']) || md5($_SESSION['p']) != $_GET['p']) { 
       //questo vuol dire che è stato tentato un accesso diretto tipo [url]http://www.mio_sito.it/login_2.php[/url] 
    $_SESSION=array();//distruggo le sessioni e rimando alla index 
       header('location: index.php'); 
        //header('location: login.php'); va in loop
       exit(); 
}  
//...
?>
non puoi rimandare alla login.php ti entra come minimo in loop, quando sei in quel punto verifichi
!isset($_SESSION['p']) || md5($_SESSION['p']) != $_GET['p']: essendo NO rimandi alla login, ma essendo NO rimandi alla login, ma ...e così all'infinito o sino a che ti si blocca il bw (vedi errore) o il pc.
quella verifica e quel rimando (alla index) è fatto perche uno non possa entrare fraudolentemente.
l'utente, non fraudolento, clicca sul link della index e gli appare il form dove può scegliere
1. se iscritto inserire il suo user e pass (e quindi accedere alla parte privata)
2. se non iscritto se vuole puo iscriversi (link alla pag di registrazione)
3. può uscire
Come posso risolvere ????
quindi non capisco cosa tu abbia da risolvere
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Perdonami. Quello che volevo fare io era di indirizzarmi direttamente alla pagina di login, anzicchè prima cliccare sul link per poi visualizzare la pagina di username e password. In genere nel vecchi progetto che avevo, se facevo girare login.php, compariva la richiesta di username e password, digitavo entravo e la pagina che vedevo era protetta. ma ovviamente, non mi dava il saluto e tutto il resto. Siccome trovo più semplice e sicuramente più sicuro il tuo, volevo cercare appunto di eliminar eil link e comunque di visualizzarmi direttamente la maschera di accesso. Ma se non si può far enon fa niente. Comunque hai visto le immagini per capire le mie intenzioni ?????
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
quindi tu vorresti
Quello che volevo fare io era di indirizzarmi direttamente alla pagina di login, anzicchè prima cliccare sul link per poi visualizzare la pagina di username e password.
ciè scrivere sul bw
http:// www. mio sito.it / login.php
oppure
http:// localhost:8080 /cartella / login.php
ma questo è proprio quello che il mio script cerca di evitare
se vuoi quello "l'è tutto (o quasi) da rifare"

dimenticavo
se non fai cos' comunque il link ti serve
 
Ultima modifica:

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Allora, ora ho capito lo script, solo che l'ho dovuto cancellare e reinstallare da capo. L'originale c'è l'ho salvato sul pc senza nessuna modifica. Però ho modificato alcune cosine e fra poco lo vedrai. Ma sono sopratutto la connessione al db, username e password e md5. Volevo che gli dessi un occhia per capire il motico per cui non mi fa entrare con la mia tabella. Ti posto tutto quanto. Abbi pazienza, ma sto studiando e voglio capire. Sono capoccione e ogni tanto mi sintasa il cervello e non risolvo. Inoltre lascio il link, visto che mi hai detto che bisognerebbe rifare tutto quasi da capo. Ma sarebbe dificcile com'è impostato rifarlo da capo visualizzando semplicemente la pagina di accesso ???? (Semplice curiosità).

La mia tabella il database si chiama prova, la tabella ovviamente utenti ed è formata così:

PHP:
CREATE TABLE utenti (
    id        INT UNSIGNED NOT NULL AUTO_INCREMENT,
    nome        VARCHAR(30) NOT NULL,
    username VARCHAR(30) NOT NULL,
    password VARCHAR(255) NOT NULL,
    PRIMARY KEY(id)
);

Allora questo è: login_2.php

PHP:
<?php
ob_start();
session_start();
/* ************************************************************************
questo codice si può usare per far accedere diversi utenti ciascuno col suo user e pass
necessita di un database
ricordarsi quando si registra una password nel database di codificarla con sha1
TABELLA utenti (minimo)
id int(12) notnull autoincrement primary key
us varchar(250) not null #username
pa varchar(250) not null #password codificata sah1
************************************************************************* */
if (!isset($_SESSION['p']) || md5($_SESSION['p']) != $_GET['p']) {
   	//questo vuol dire che è stato tentato un accesso diretto tipo http://www.mio_sito.it/login_2.php
	$_SESSION=array();//distruggo le sessioni e rimando alla index
   	header('location: index.php');
   	exit();
}
//con questo si evita che venga visualizzato http://www.mio_sito..... nel bw
echo "<head><title>{$_SESSION['p']}</title></head>";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    //$password = sha1(addslashes($_POST['pass']));
      $username = addslashes($_POST['username']);
      $password = md5(addslashes($_POST['password']));
	require_once "connetti.php";//dati di connessione al database
	//query e verifica dell'esistenza coppia user-pass
	//$q=mysql_query("SELECT * FROM utenti WHERE us='$username' AND pa='$password'");
	$q=mysql_query("SELECT * FROM utenti WHERE username='$username' AND password='$password'");
        if (mysql_num_rows($q) === 1) {

       // $_SESSION['p'] = sha1(uniqid(mt_rand()));//rivalorizzo la sessione
        $_SESSION['p'] = md5(uniqid(mt_rand()));//rivalorizzo la sessione

        $_SESSION['user'] = $nome;
		//se mi serve il nome è questo è nella tabella utenti
		$riga=mysql_fetch_array($q);//estraggo il nome
		$_SESSION['nome'] = $riga['nome'];//e lo passo in sessione
        header("Location: private.php?r={$_SESSION['p']}");//tutto ok rinvio alla privata sempre trasmettendo il la sessione anche con get
        exit();
    }
	//password e/o username non corretti
    $_SESSION=array();//distruggo le sessioni e rimando alla index
    header('Location: index.php');
    exit();
}
//se il session[p] e il get[p* sono OK mostro il form di log
echo <<<EOF
    <p>da usare un user e pass registrati sul db</p>
    <form name="form1" method="post" action="{$_SERVER['REQUEST_URI']}">
    <table width="45%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="16%">username</td>
        <td width="84%"><input name="user" type="text" id="username"></td>
      </tr>
      <tr>
        <td>password</td>
        <td><input name="pass" type="password" id="password"></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td><input name="log" type="submit" id="log" value="log"></td>
      </tr>
    </table>
    </form>
	<p><a href="login_2.php">esci</a></p>
EOF;
ob_end_flush();
?>

Questo è index.php

PHP:
<?php
session_start();
$_SESSION['p'] = sha1(uniqid(mt_rand()));//genero e codifico un numero casuale

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Home</title>
    </head>
    <body>
        <!-- bla... bla... bla... -->
		<!-- trasmetto la sessione ricodificata tramite GET per accedere alla pagina/e riservata/e-->
		<p><a href="login_2.php?p=<?php echo md5($_SESSION['p']); ?>">riservate</a></p>
    </body>
</html>

E questo è la private.php

PHP:
<?php
session_start();
if (!isset($_SESSION['p']) || !isset($_SESSION['user']) || $_SESSION['p'] != $_GET['r']) {
    //questo vuol dire che � stato tentato un accesso diretto tipo http://www.mio_sito.it/private.php
	$_SESSION=array();//in caso di accesso diretto (abuso) distruggo le sessioni e rimando alla index
    header('Location: index.php');
    exit();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><?php echo $_SESSION['user']; ?></title>
</head>
<body>
<h2>ciao <?php echo $_SESSION['user'];//o se esiste $_SESSION['nome'] ?></h2>
<p>sei nella sezione riservata<br>e sei arrivato da <?php echo basename($_SERVER['HTTP_REFERER']); ?></p>
<!-- bla... bla... bla... -->
<p><a href="login_2.php">esci</a></p>
<!--
per uscire (in qualsiasi pag privata sia) riinvio alla pag di login, ma senza trasmettere il get
nella pag di login (anche se per ora la sessione ['p']
se ho link ad altre pagine riservate i link devono avere sempre la quarystringa del get es. (senza il commento)
<a href="altra_pagina.php?p=<?php //echo md5($_SESSION['p']); ?>">altra riservata</a>
-->
</body>
</html>
Come al solito aspetto le tue correzioni, grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prima voglio farti una domanda:
dice che non riesci a entrare con il tuo user e la tua pass, ma quando hai inserito la pass in tabella l'hai codificata con md5?
es. se la tua pass è (es.) pinco nel campo pass trovi 0dc8b5e57986cabb75f80a13e7e9ce06f68a0dac ?
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Scusami se ti ho risposto in ritardo. Comunque, si se vai a vedere alla riga della password, ho la codifica ad md5 come mi avevi detto tu. Tant'è che per maggiore sicurezza, ho rifatto la tabella, in quanto ogni tanto si sputtana. Ti posto le rifghe modificat ein md5:

PHP:
/$password = sha1(addslashes($_POST['pass']));
      $username = addslashes($_POST['username']);
      $password = md5(addslashes($_POST['password']));
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non li, ma quando la registri (salvi) nella tabella
fatti questo scriptino
PHP:
<?php
$mia_pass="pinco pallo";//metti la tua effettiva al posto di pinco pallo
$mia_pas_cod=md5($mia_pass);
echo "la mia password in chiaro è $mia_pass<br>";
echo "la mia password codificata md5 è $mia_pas_cod<br>";//dentro in tabella
?>
nella tabella utenti nel campo password devi trovare (guarda con mysqladmin) il secondo valore cioè quello di $mia_pas_cod, se non è così o non codifichi o codifichi male quando registri (salvi) la password
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Ti posto per scrupolo l'iscrizione.php così vedi se tante volte codifica male, ma non credo perchè fino a l'altro ieri funzionava bene. oggi rimesso non mi va più. Boh.

PHP:
<?php

require_once("connetti.php");

if(!isset($_POST['reg'])){

?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>

     <center>   <H1>BENVENUTO NEL SITO D'ISCIRIZIONE PROVA</H1>

 <form action= '' method="POST">

 <font face="Comic Sans MS">

Nome: <input type="text" name="nome"  maxlength="30" size ="35"> <br> <br>
Username: <input type="text" name="username"  maxlength="30" size ="35" > <br> <br>

Password:    <input type='password' name='password'  maxlength="8" size="8"> <br> <br>

Re-Password: <input type='password' name='passw' maxlength="8" size="8"> <br> <br>
 </font>
<center>
<input type="submit" name="reg" value="Invio iscrizione" />
 <input type="submit" name="uscita" value="Uscita" />
</center> </form>


    </head>
    <body>
<?php
}else{
 $nome = mysql_real_escape_string(strtolower(trim ($_POST['nome'])));
 $username = mysql_real_escape_string(strtolower(trim ($_POST['username'])));
 $password = mysql_real_escape_string(trim ($_POST['password']));
 $passw = mysql_real_escape_string(trim ($_POST['passw']));

 //crittografa la passowrod

 $pass = mysql_real_escape_string(md5(trim($_POST['password'])));

 $errore ="";
//if($rivista ==""){$errore .= "non hai inserito il titolo della rivista<br>";}

 if($nome ==""){$errore .=  "Attenzione: il campo nome deve essere compilato. <br> <br>";}
 if($username ==""){$errore .=  "Attenzione: il campo username deve essere compilato. <br> <br>";}
 if($password ==""){$errore .=  "Attenzione: il campo password deve essere compilato. <br><br>";}
 else{

 if($password != $passw){$errore .=  "Attenzione: le due password non coincidono. <br> <br>";}


}

     // Controllo se esiste lo username nel db

$checkuser=mysql_query("SELECT username FROM utenti WHERE username='$username'");
$vuota=mysql_num_rows($checkuser);
if($vuota > 0){
	echo "<br> <br> <h1> Attenzione: lo username: ".$username." è già presente nell'archivio. Si prega di cambiare username. Grazie !!! </h1>";
echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();

}
 
 if($errore !=""){
		echo "<h1>$errore</h1>";
		echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}else{
	 $q_i=mysql_query("INSERT INTO utenti(nome, username, password) VALUES('$nome','$username','$pass')");
			echo "<h1> <br>Utente registrato correttamente. </h1>";//e torno al form
			echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
}
 ?>    </body>
</html>

Inoltre questo è quello che mi si presenta su phpmyadmin:

PHP:
id 	nome 	username 	password

1 	fabio 	paperinik4 	0c88028bf3aa6a6a143ed846f2be1ea4

Credo che la codifica sia esatta. Considera mi ha sempre funzionato anche con il tuo modificato il giorno in cui me l'hai mandato.

Allora ho anche eseguito lo script da te suggerito. E il risultato è il seguente:

PHP:
la mia password in chiaro è pinco pallo
la mia password codificata md5 è 202b301dd93a015efbe7ebb03216d259


Lo script l'ho scritto così, spero di non aver sbagliato:

PHP:
<?php

require_once("connetti.php");

$mia_pass="pinco pallo";//metti la tua effettiva al posto di pinco pallo
$mia_pas_cod=md5($mia_pass);
echo "la mia password in chiaro è $mia_pass<br>";
echo "la mia password codificata md5 è $mia_pas_cod<br>";//dentro in tabella
?>
 
Ultima modifica:

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,


Dopo tanti tentativi ho risolto definitivamente e ho tolto pure il link. Ora ogni volta che faccio girare il login mi compare direttamente la pagina di accesso. Inoltre, se provo a digitare www.pincopallino.it/private.php, il risultato se non sei loggato correttamte, ti rimanda come deve fare, alla pagina di login. Se il login è corretto, riesci a vedere la pagina protetta. Ti posto il codice modificato se tante volte ci sono errori. Non credo perchè riesco anche ad accedere con i miei dati, presi dalla tabella. Cosa che con il tuo non riuscivo.

PHP:
<?php
require_once("connetti.php");

if(!isset($_POST['log'])){

?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>

     <center>   <H1>BENVENUTO NEL SITO D'ISCIRIZIONE PROVA</H1>

 <form action= '' method="POST">

 <font face="Comic Sans MS">


Username: <input type="text" name="username"  maxlength="30"  > <br> <br>

Password:    <input type='password' name='password'  maxlength="8" > <br> <br>
 </font>
<center>
<input type="submit" name="log" value="Loggati" />
 <input type="submit" name="reg" value="Registrati" />
</center> </form>


    </head>
    <body>
 <?php
} else //chiude l'if del tasto loggati


ob_start();
session_start();
/* ************************************************************************
questo codice si può usare per far accedere diversi utenti ciascuno col suo user e pass
necessita di un database
ricordarsi quando si registra una password nel database di codificarla con sha1
TABELLA utenti (minimo)
id int(12) notnull autoincrement primary key
us varchar(250) not null #username
pa varchar(250) not null #password codificata sah1
************************************************************************* */

//con questo si evita che venga visualizzato http://www.mio_sito..... nel bw
echo "<head><title>{$_SESSION['p']}</title></head>";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    //$password = sha1(addslashes($_POST['pass']));
      $username = addslashes($_POST['username']);
      $password = md5(addslashes($_POST['password']));
	require_once "connetti.php";//dati di connessione al database
	//query e verifica dell'esistenza coppia user-pass
	//$q=mysql_query("SELECT * FROM utenti WHERE us='$username' AND pa='$password'");
	$q=mysql_query("SELECT * FROM utenti WHERE username='$username' AND password='$password'");
        if (mysql_num_rows($q) === 1) {
//$_SESSION['p'] = md5(uniqid(mt_rand()));//rivalorizzo la sessione
        $_SESSION['p'] = sha1(uniqid(mt_rand()));//rivalorizzo la sessione


        $_SESSION['user'] = $nome;
		//se mi serve il nome è questo è nella tabella utenti
		$riga=mysql_fetch_array($q);//estraggo il nome
		$_SESSION['nome'] = $riga['nome'];//e lo passo in sessione
        header("Location: private.php?r={$_SESSION['p']}");//tutto ok rinvio alla privata sempre trasmettendo il la sessione anche con get
        exit();
    }
	//password e/o username non corretti
    $_SESSION=array();//distruggo le sessioni e rimando alla index
    header('Location: index.php');
    exit();
}
?>
</html>
    </body>

Provalo e poi mi dici se ci sono errori.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Non so se hai dato un'occhiata alla modifica che ho fatto. Sembra funzionare tutto per il meglio. Ancche se sulla barra dell'indirizzo ci metti benvenuto.php (ho messo il richiamo sulla paginaprotetta), non te la fa visualizzare. La visualizzi solo se sei loggato correttamente. Solo che cè un fatto. Non so il perchè, se cambio username ad entrare, mi visualziza sempre ciao pincopallino e non ciao pincapallina. Da cosa potrebbe dipendere ????? Spero di ricevere lucidazioni da parte tua.

P.S.: Ho rimesso la parte di codice quella che avevo tolto per scrupolo, per vedere se dipedenva da wquello. Ma il risultato è che se entro con qualsiasi tipo di utenza, mi dice sempre "ciao pincopallino", e non cambia.

Rislto il problema. Ora qualsiasi utente ci metto, mi visualizza il nome corretto. Mi ero dimenticato di modificare le seguenti righe su private.php. ora te le posto:


PHP:
Prima della cura:

<h2>ciao <?php echo $_SESSION['user'];//o se esiste $_SESSION['nome'] ?></h2>

Dopo la cura:

<h2>ciao <?php echo $_SESSION['nome'];//o se esiste $_SESSION['nome'] ?></h2>

Cosa ne pesni delle modifche apportate ?????
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
così ad occhio i croce vedo solo
PHP:
<?php 
} else //chiude l'if del tasto loggati 
//....
cioè non vedo l'apertura della graffa dopo l'else ne la sua chiusura, schematicamente l'if else dovtebbe essere così

if(condizioni){
istruzioni nell'if
}else{
istruzioni nell'else
}
cioè non vedo la graffa che ho segnato in rosso
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao,

Senti mi sono accorto che nel file iscrizione.php, se metteo un username che è presente nel db e poi metto due password una diversa dall'altra, mi dice semplicemente, che pincopallino è già presente nel db, e non mi dice anche che le due password sono errate. Per il resto facendo diverse prove, va tutto bene. C'è solo quest apiccola pecca, che vorrei capire il perchè. Ovviamente, se metto un username diverso e non è presente, e digito le due password diverse, mi segnala che le due password non coincidono oppure se ho lasciato qualche campo in bianco me lo segnala. Ti posto il listato, spero ch emi puoi aiutare a risolvere il problemino. Intanto, faccio le correzioni sull'if di login. E' tutto consequenziale. Ossia tutto nello stesso progetto.

PHP:
<?php

require_once("connetti.php");

if(!isset($_POST['reg'])){

?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>

     <center>   <H1>BENVENUTO NEL SITO D'ISCIRIZIONE PROVA</H1>

 <form action= '' method="POST">

 <font face="Comic Sans MS">

Nome: <input type="text" name="nome"  maxlength="30" size ="35"> <br> <br>
Username: <input type="text" name="username"  maxlength="30" size ="35" > <br> <br>

Password:    <input type='password' name='password'  maxlength="8" size="8"> <br> <br>

Re-Password: <input type='password' name='passw' maxlength="8" size="8"> <br> <br>
 </font>
<center>
<input type="submit" name="reg" value="Invio iscrizione" />
 <input type="submit" name="uscita" value="Uscita" />
</center> </form>


    </head>
    <body>
<?php
}else{
 $nome = mysql_real_escape_string(strtolower(trim ($_POST['nome'])));
 $username = mysql_real_escape_string(strtolower(trim ($_POST['username'])));
 $password = mysql_real_escape_string(trim ($_POST['password']));
 $passw = mysql_real_escape_string(trim ($_POST['passw']));

 //crittografa la passowrod

 $pass = mysql_real_escape_string(md5(trim($_POST['password'])));

 $errore ="";
//if($rivista ==""){$errore .= "non hai inserito il titolo della rivista<br>";}

 if($nome ==""){$errore .=  "Attenzione: il campo nome deve essere compilato. <br> <br>";}
 if($username ==""){$errore .=  "Attenzione: il campo username deve essere compilato. <br> <br>";}
 if($password ==""){$errore .=  "Attenzione: il campo password deve essere compilato. <br><br>";}
 else{

 if($password != $passw){$errore .=  "Attenzione: le due password non coincidono. <br> <br>";}
}

     // Controllo se esiste lo username nel db

$checkuser=mysql_query("SELECT username FROM utenti WHERE username='$username'");
$vuota=mysql_num_rows($checkuser);
if($vuota > 0){
	echo "<br> <br> <h1> Attenzione: lo username: ".$username." è già presente nell'archivio. Si prega di cambiare username. Grazie !!! </h1>";
echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
exit();

}
 
 if($errore !=""){
		echo "<h1>$errore</h1>";
		echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}else{
	 $q_i=mysql_query("INSERT INTO utenti(nome, username, password) VALUES('$nome','$username','$pass')");
			echo "<h1> <br>Utente registrato correttamente. </h1>";//e torno al form
			echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
}
 ?>    </body>
</html>

Grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
forse ti conviene fare tre select per verificare se esiste username o la password e la coppia user/pass
PHP:
<?php
//....
$errore="";
//tutte le altre verifiche che fai riempiendo se serve la variabile $errore
//..... e poi verifichi se esiste qualcosa
$chec_us=mysql_query("SELECT username FROM utenti WHERE username='$username'");
if(mysql_num_rows($chec_us) > 0){
	$errore .="<br> <br> <h1> Attenzione: lo username: ".$username." è già presente nell'archivio. Si prega di cambiare username. Grazie !!! </h1>";
}
$chec_pa=mysql_query("SELECT username FROM utenti WHERE password='$password'");
if(mysql_num_rows($chec_pa) > 0){
	$errore .="<br> <br> <h1> Attenzione: la password: ".$password." è già presente nell'archivio. Si prega di cambiare password. Grazie !!! </h1>";
}
$chec_uspa=mysql_query("SELECT username FROM utenti WHERE username='$username' AND password='$password'");
if(mysql_num_rows($chec_uspa) > 0){
	$errore .="<br> <br> <h1> Attenzione: password: $password e username $username sono già presenti. Si prega di cambiarli. Grazie !!! </h1>";
}
if($errore !=""){
	echo $errore;
	echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
	exit();
}else{//NON ci sono errori
	//inserisci e ringrazi
}
?>
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao

Ciao, ok ora lo provo e poi ti dico se ho problemi. Ho fatto le modifiche che mi hai detto e spero che siano giuste. Ti posto il file login.php per vedere se la correzione è giusta.

PHP:
<?php
} else{ //chiude l'if del tasto loggati


ob_start();
session_start();



//con questo si evita che venga visualizzato http://www.mio_sito..... nel bw
echo "<head><title>{$_SESSION['p']}</title></head>";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    //$password = sha1(addslashes($_POST['pass']));
      $username = addslashes($_POST['username']);
      $password = md5(addslashes($_POST['password']));
    require_once "connetti.php";//dati di connessione al database
    //query e verifica dell'esistenza coppia user-pass
    //$q=mysql_query("SELECT * FROM utenti WHERE us='$username' AND pa='$password'");
    $q=mysql_query("SELECT * FROM utenti WHERE username='$username' AND password='$password'");
        if (mysql_num_rows($q) === 1) {
//$_SESSION['p'] = md5(uniqid(mt_rand()));//rivalorizzo la sessione
        $_SESSION['p'] = sha1(uniqid(mt_rand()));//rivalorizzo la sessione


        $_SESSION['user'] = $nome;
        //se mi serve il nome è questo è nella tabella utenti
        $riga=mysql_fetch_array($q);//estraggo il nome
        $_SESSION['nome'] = $riga['nome'];//e lo passo in sessione
        //header("Location: private.php?r={$_SESSION['p']}");//tutto ok rinvio alla privata sempre trasmettendo il la sessione anche con get
        header("Location: benvenuto.php?r={$_SESSION['p']}");
        exit();
    }
    //password e/o username non corretti
    $_SESSION=array();//distruggo le sessioni e rimando alla index

echo " <h1> <center> <br> La password e/o lo username sono sbagliati. Riprovare grazie !!! </center> </h1>";
echo "<meta http-equiv='Refresh' content='3; URL=login.php'>";

    exit();
}
}
?>
</html>
    </body>

Un consiglio, come posso gestire due o più tasti ????? Ho una soluzione m ala trovo troppo semplice e adire il vero non mi piace molto. Te la posto qui di seguito. poi tu magari mi dici come faresti. Grazie.

PHP:
<input type="button" onClick="window.location.href='logout.php';" value="Esci" />

Ci sono altre soluzioni per caso ????
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Aiuto per le sessioni PHP 3
E Aiuto per query PHP 8
I aiuto urgente per thunderbird Posta Elettronica 0
I aiuto per outlook Posta Elettronica 0
T aiuto per trasformare un quiz fatto in JS in un quiz in JQUERY jQuery 0
M Fullcalendar in Codeigniter, un aiuto per la chiamata $ajax ? jQuery 0
P Aiuto per rendere un Bot Telegram Privato PHP 1
A Aiuto per pagina php PHP 0
T cercasi aiuto per file d1 (open-edge db) Database 0
L Aiuto per programma web php/mySQL PHP 2
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
T Aiuto per php7 e mysqli PHP 3
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
wildcity9 aiuto per sbloccare account instagram bannati Social Media Marketing 0
A Aiuto per configurare il banner di Iubenda su un sito in html HTML e CSS 0
S [PHP] Aiuto creazione form php per completamento modello word PHP 1
Z [HTML] aiuto per visualizzazione su tablet Offerte e Richieste di Lavoro e/o Collaborazione 6
W [PHP] Un aiuto per il mio primo "Multithread" PHP 0
G Vuoi fare successo? Abbiamo bisogno di aiuto per un app! Offerte e Richieste di Lavoro e/o Collaborazione 1
K [javascript] Aiuto per programma subnetting Javascript 0
F ciao, sono ferro e ho bisogno di aiuto per problemi con la mail di alice.it Presentati al Forum 1
L [PHP] aiuto per installazione mrbs PHP 0
1 Aiuto per nuovo sito SEO e Posizionamento 4
K Server per sito di annunci: aiuto nella scelta Hosting 4
P [Javascript] Aiuto per recupero variabili da script Javascript 10
P [PHP] Aiuto per gestione file CSV PHP 24
A scambio lavoro per aiuto con android Sviluppo app per Android 0
A aiuto per un codice... PHP 1
ecosito Aiuto con la traduzione in italiano per capire come installare questo JavaScript jQuery 0
StelladelSud Cerco aiuto per una demo Offerte e Richieste di Lavoro e/o Collaborazione 3
G Piccolo aiuto per php mail PHP 2
G aiuto per semplice menu onclick HTML e CSS 6
F aiuto per funzionamento sito responsive e form contatti HTML e CSS 29
A AIUTO per impostazione doppia cifra in tabella HTML e CSS 6
G Passaggio variabili tra pagine- Aiuto per maturità 2015 PHP 3
G Passaggio variabili tra pagine- Aiuto per maturità 2015 PHP 0
A Aiuto per Flash player Flash 0
J Aiuto per localstorage con jquery/js/json Javascript 4
M Cerco aiuto per una modifica di un codice Javascript 2
A Aiuto per ordine cronologico lista file all'interno di una cartella protetta PHP 2
G Aiuto! Studente cerca aiuto per un codice PHP PHP 1
S Aiuto per 2 codifiche java Java 4
G Aiuto per creare chat stile Facebook Javascript 7
Sevenjeak Aiuto e consigli su adattamento sito per dispositivi mobile HTML e CSS 2
S aiuto per script PHP/OOP PHP 2
J Aiuto per un sitema di upload per un progetto PHP 0
K Aiuto per sito Discussioni Varie 0
D Richiesta aiuto siti per indirizzamento forum HTML e CSS 1
M Aiuto per una libreria per generare grafici PHP 1
B Saluti ed aiuto per pagina web html HTML e CSS 11

Discussioni simili