• Home
  • Forum
  • Fare Web
  • PHP

Aiuto per le sessioni

  • Creatore Discussione Creatore Discussione paperinik4
  • Data di inizio Data di inizio 24 Feb 2012
Prec.
  • 1
  • 2
  • 3
  • 4
Succ.
Primo Prec. 3 di 4 Succ. Ultimo
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 2 Mar 2012
  • #41
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: 2 Mar 2012
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 2 Mar 2012
  • #42
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.044
150
63
PR
www.borgo-italia.it
  • 2 Mar 2012
  • #43
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 ????
Clicca per allargare...
quindi non capisco cosa tu abbia da risolvere
 
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 2 Mar 2012
  • #44
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.044
150
63
PR
www.borgo-italia.it
  • 2 Mar 2012
  • #45
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.
Clicca per allargare...
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: 2 Mar 2012
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 3 Mar 2012
  • #46
Ciao

Capito,

Quindi l link +è una protezione alla fine se non ho capito male.
 
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 3 Mar 2012
  • #47
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.044
150
63
PR
www.borgo-italia.it
  • 3 Mar 2012
  • #48
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 ?
 
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 3 Mar 2012
  • #49
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.044
150
63
PR
www.borgo-italia.it
  • 3 Mar 2012
  • #50
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
 
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 3 Mar 2012
  • #51
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: 3 Mar 2012
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 3 Mar 2012
  • #52
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.
 
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 4 Mar 2012
  • #53
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: 4 Mar 2012

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 5 Mar 2012
  • #54
ciao
devo ancora guardarlo
penso oggi di avere un minuto
 
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 5 Mar 2012
  • #55
Ciao

ok Grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 5 Mar 2012
  • #56
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
 
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 5 Mar 2012
  • #57
Ciao

Cia,

Secondo te potrebbe essere quella la causa di qualche problema ?????
 
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 5 Mar 2012
  • #58
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.044
150
63
PR
www.borgo-italia.it
  • 5 Mar 2012
  • #59
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
}
?>
 
P

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
  • 5 Mar 2012
  • #60
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 ????
 
Prec.
  • 1
  • 2
  • 3
  • 4
Succ.
Primo Prec. 3 di 4 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

P
Aiuto per le sessioni
  • paperinik4
  • 2 Ago 2012
  • PHP
Risposte
3
Visite
911
PHP 3 Ago 2012
paperinik4
P
E
Aiuto per query
  • Emanuele85
  • 25 Nov 2023
  • PHP
Risposte
8
Visite
3K
PHP 14 Dic 2023
marino51
I
aiuto urgente per thunderbird
  • ilprincipiante
  • 11 Ott 2022
  • Posta Elettronica
Risposte
0
Visite
1K
Posta Elettronica 11 Ott 2022
ilprincipiante
I
I
aiuto per outlook
  • ilprincipiante
  • 22 Giu 2022
  • Posta Elettronica
Risposte
0
Visite
1K
Posta Elettronica 22 Giu 2022
ilprincipiante
I
T
aiuto per trasformare un quiz fatto in JS in un quiz in JQUERY
  • theseo
  • 6 Gen 2022
  • jQuery
Risposte
0
Visite
3K
jQuery 6 Gen 2022
theseo
T
M
Fullcalendar in Codeigniter, un aiuto per la chiamata $ajax ?
  • mapa
  • 15 Nov 2021
  • jQuery
Risposte
0
Visite
2K
jQuery 15 Nov 2021
mapa
M
P
Aiuto per rendere un Bot Telegram Privato
  • PieRC
  • 13 Giu 2021
  • PHP
Risposte
1
Visite
3K
PHP 9 Ago 2021
odino
O
A
Aiuto per pagina php
  • AndreaCerre
  • 17 Feb 2021
  • PHP
Risposte
0
Visite
1K
PHP 17 Feb 2021
AndreaCerre
A
T
cercasi aiuto per file d1 (open-edge db)
  • theseo
  • 9 Ott 2020
  • Database
Risposte
0
Visite
1K
Database 9 Ott 2020
theseo
T
L
  • Bloccata
Aiuto per programma web php/mySQL
  • Ludo83
  • 29 Giu 2020
  • PHP
Risposte
2
Visite
2K
PHP 30 Giu 2020
Max 1
[Javascript] aiuto su jquery per calcolo altezze dom
  • claudio_lorenzo
  • 23 Nov 2019
  • Javascript
Risposte
1
Visite
1K
Javascript 23 Nov 2019
Tommy03
T
Aiuto per php7 e mysqli
  • tisana
  • 6 Apr 2019
  • PHP
Risposte
3
Visite
2K
PHP 6 Apr 2019
Max 1
T
mysql tutorial per importare tabelle access in mysql aiuto
  • twogate
  • 13 Mar 2019
  • MySQL
Risposte
2
Visite
2K
MySQL 13 Mar 2019
twogate
T
aiuto per sbloccare account instagram bannati
  • wildcity9
  • 14 Dic 2018
  • Social Media Marketing
Risposte
0
Visite
1K
Social Media Marketing 14 Dic 2018
wildcity9
A
Aiuto per configurare il banner di Iubenda su un sito in html
  • alessiapietralata
  • 1 Dic 2018
  • HTML e CSS
Risposte
0
Visite
1K
HTML e CSS 1 Dic 2018
alessiapietralata
A
S
[PHP] Aiuto creazione form php per completamento modello word
  • sagoch
  • 14 Apr 2018
  • PHP
Risposte
1
Visite
2K
PHP 16 Apr 2018
macus_adi
Z
[HTML] aiuto per visualizzazione su tablet
  • Zeitblom
  • 4 Gen 2018
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
6
Visite
2K
Offerte e Richieste di Lavoro e/o Collaborazione 19 Gen 2018
puntotoprinci
P
W
[PHP] Un aiuto per il mio primo "Multithread"
  • w_t
  • 23 Nov 2017
  • PHP
Risposte
0
Visite
2K
PHP 23 Nov 2017
w_t
W
G
Vuoi fare successo? Abbiamo bisogno di aiuto per un app!
  • G-ere
  • 4 Nov 2017
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
1
Visite
1K
Offerte e Richieste di Lavoro e/o Collaborazione 5 Nov 2017
Max 1
K
[javascript] Aiuto per programma subnetting
  • Kaz
  • 5 Giu 2017
  • Javascript
Risposte
0
Visite
2K
Javascript 5 Giu 2017
Kaz
K
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?