Vai al contenuto

Login in php


iWin

Messaggi raccomandati

Salve a tutti vorrei sapere una cosa

sto cercando di realizzare un piccol sito web in php adesso mi chiedo essendo che lo sto dotanto di login, quando voglio fare il login funziona tutto ma praticamente appena loggo e cambio pagina perdo tutto cosa sbaglio ?

•I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.

Link al commento
Condividi su altri siti

all'atto del login, quando hai verificato che i dati di accesso sono validi, devi salvare l'utenticazione avvenuta in una variabile di sessione (tipo auth e valore OKAUTENTICATO).

poi in ogni pagina php per prima cosa devi richiamare la funzione session_start(); altrimenti perdi i dati sulla sessione.

eventualmente puoi controllare in ogni pagina se chi la visita è autenticato.

(cerca di dare un nome particolare alla variabile ed al suo valore......quelli più banali vengono provati dai bot che tentano di accedere).

An  a tuesday keeps the doctor away.

proud member of < noi finti professionisti > club - tessera 044

Link al commento
Condividi su altri siti

Grazie ragazzi adesso provo e vi faccio sapere !! ;)

•I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.

Link al commento
Condividi su altri siti

Ragazzi niente no nfunziona le variabili user e password le salvo sulle global idi PHp $_SESSION['user o password'] a secondo se è utente o password sto impazzendo più tardi vi posto il codice

•I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.

Link al commento
Condividi su altri siti

è più facile di quanto credi.

login.html (o php che sia all'interno hai il form con tutti i campi. method="POST" action="verifica.php"

verifica.php

nella primissima riga: session_start(); per avviare la sessione poi successivamente

$username = $_POST['nome campo username di login.html]

$username = $_POST['nome campo password di login.html]

Ora controlli che la cominazione $username e $password coincidano con quelli salvati nel database.

Se coincidono allora farai:

$_SESSION['loggato']=true; (o $_SESSION['loggato']=1 , come preferisci)

in ogni pagina dovrai fare il controllo che la variabile $_SESSION['loggato']==true prima di fare qualsiasi cosa. Se non lo è, scrivi che bisogna essere loggati.

Questo è quanto pix77 e noncicredoneanche hanno detto.

non si salva in chiaro la password in sessione almeno che tu non stia su un server dedicato

Io non lo farei neanche per gioco in locale senza connessione :oops:

Link al commento
Condividi su altri siti

Questo è quanto pix77 e noncicredoneanche hanno detto.

:cincin: questa frase ha un nonsochè di comico :cincin:

comunque, sì, è quello che intendevo.

suggerisco nomi strani, tipo $_SESSION['logingiusto'] = "OKautenticato";

poi nelle pagine, subito dopo il session_start(); :

if($_SESSION['logingiusto'] != "OKautenticato") {

header("location:http://www.sito.ext/login.php");

exit();

}

guardando spesso i log dei miei server, posso dirti che le provano davvero tutte per entrare.....non c'hanno un 'zzo da fare....

anche nelle form html, meglio non chiamare i campi di input "username" e "password"....o "usr" e "pwd".....fai tipo "nomutente" e "parchiave"....vai a fantasia..... :mhh:

ancora meglio, metti sempre un captcha di qualità nelle form, sia di login che di richiesta informazioni.

con questi piccoli accorgimenti, sono anni che non mi bucano un sistema (ovviamente non sono mai stato preso di mira da quelli seri :P )

An  a tuesday keeps the doctor away.

proud member of < noi finti professionisti > club - tessera 044

Link al commento
Condividi su altri siti

raga grazie questo è l'ultimo metodo minkia sto impazzendo il bello che ad un mio amico gliel'ho fatto io, stessa configurazione di webserver e c**** , cmq la password è in chiaro perchè questo lo porto come progetto d'esame e voglio fare vedere alla commissione che non scrivo fessarie, sapete come sono fatti quelli che non capiscono di che si tratta !!:ghghgh:

•I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.

Link al commento
Condividi su altri siti

<?php


		  		  /*****Parametri Connessione*****/
	  				$host=":/tmp/mysql.sock";
	  				$name="root";
	  				$pass="root";
	  				$db="multistore";

	 			 /******Connessione con controlli**********/
	  				$conn=mysql_connect("$host","$name","$pass");
	  						if (! $conn) exit("errore connessione DBMS !");
	  				$sdb=mysql_select_db($db);
	  						if (! $sdb) exit("errore selezione database !");

if($_POST) {
effettua_login();					  
} else {
mostra_form();
}

function mostra_form()
{
?>
			<form id="form1" name="form1" method="post" action="http://localhost:8888/esamif/index.php">
               <p> </p>
               <p class="Stile1">  <img src="img/loguser.jpg" width="46" height="46" />Login </p>
               <p>
                 <label>Username:
                 <input type="text" name="username" id="username" />
                 </label>
               </p>
               <p>
                 <label>Password:
                 <input type="password" name="password" id="password" />
                 </label>
               </p>
               <p align="center">
                 <input type="submit" name="conferma" id="conferma" value="Invia" />
               </p>
                <p><a href="registrati.php">registrati</a></p>
             </form>
<?php
}

function effettua_login()
{
// recupero il nome e la password inseriti dall'utente
$nome      = trim($_POST['username']);
$password  = trim($_POST['password']);

						if(get_magic_quotes_gpc()) {
										$nome      = stripslashes($nome);
										$password  = stripslashes($password);
										}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$nome     = mysql_real_escape_string($nome);
$password = mysql_real_escape_string($password);	

// preparo ed invio la query
$query = "SELECT user, password FROM clienti WHERE user = '$nome' AND password = '$password'";
$result = mysql_query($query);
// controllo l'esito
		if (!$result)  exit("Errore nella query: ".mysql_error());

$record = mysql_fetch_array($result);
if(!$record) {
	echo "<h3> Non ci sono utenti<br>con questo user e password<br><hr></h3>";
} else {
			$_SESSION['user'] = $record['user'];
               $_SESSION['password']=$record['password'];
			echo '<img src="img/lucchetto aperto.png" width="70 px" height="70 px" />';
			echo "<h3> Benvenuto ".$_SESSION['user']."!</h3><br>";
			echo '<img src="img/carrello.jpg" width="30" height="30" /><a href="carrello.php">Il tuo carrello </a>';
			echo '<br><br><a href="logout.php" <input type="submit" id="logout" name="logout" value="Logout"> </a>';
			}
}
?>

questo è il codice

•I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.

Link al commento
Condividi su altri siti

questo è il codice

ok, ma qual'è il problema?

se è ancora quello del "perdo le variabili di sessione", il codice che hai riportato c'entra poco....

nelle ALTRE pagine php, come prima cosa devi chiamare session_start();

poi vai avanti con quello che vuoi.

NB: non puoi inserire pagine in solo html ovviamente.....

An  a tuesday keeps the doctor away.

proud member of < noi finti professionisti > club - tessera 044

Link al commento
Condividi su altri siti

<?php


		  		  /*****Parametri Connessione*****/
	  				$host=":/tmp/mysql.sock";
	  				$name="root";
	  				$pass="root";
	  				$db="multistore";

	 			 /******Connessione con controlli**********/
	  				$conn=mysql_connect("$host","$name","$pass");
	  						if (! $conn) exit("errore connessione DBMS !");
	  				$sdb=mysql_select_db($db);
	  						if (! $sdb) exit("errore selezione database !");

if($_POST) {
effettua_login();					  
} else {
mostra_form();
}

function mostra_form()
{
?>
			<form id="form1" name="form1" method="post" action="http://localhost:8888/esamif/index.php">
               <p> </p>
               <p class="Stile1">  <img src="img/loguser.jpg" width="46" height="46" />Login </p>
               <p>
                 <label>Username:
                 <input type="text" name="username" id="username" />
                 </label>
               </p>
               <p>
                 <label>Password:
                 <input type="password" name="password" id="password" />
                 </label>
               </p>
               <p align="center">
                 <input type="submit" name="conferma" id="conferma" value="Invia" />
               </p>
                <p><a href="registrati.php">registrati</a></p>
             </form>
<?php
}

function effettua_login()
{
// recupero il nome e la password inseriti dall'utente
$nome      = trim($_POST['username']);
$password  = trim($_POST['password']);

						if(get_magic_quotes_gpc()) {
										$nome      = stripslashes($nome);
										$password  = stripslashes($password);
										}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$nome     = mysql_real_escape_string($nome);
$password = mysql_real_escape_string($password);	

// preparo ed invio la query
$query = "SELECT user, password FROM clienti WHERE user = '$nome' AND password = '$password'";
$result = mysql_query($query);
// controllo l'esito
		if (!$result)  exit("Errore nella query: ".mysql_error());

$record = mysql_fetch_array($result);
if(!$record) {
	echo "<h3> Non ci sono utenti<br>con questo user e password<br><hr></h3>";
} else {
			$_SESSION['user'] = $record['user'];
               $_SESSION['password']=$record['password'];
			echo '<img src="img/lucchetto aperto.png" width="70 px" height="70 px" />';
			echo "<h3> Benvenuto ".$_SESSION['user']."!</h3><br>";
			echo '<img src="img/carrello.jpg" width="30" height="30" /><a href="carrello.php">Il tuo carrello </a>';
			echo '<br><br><a href="logout.php" <input type="submit" id="logout" name="logout" value="Logout"> </a>';
			}
}
?>

questo è il codice

si ma session_start(); lo devi usare anche in questa pagina perchè altrimenti php credo che non istanzi oggetti di tipo $_SESSION.

Secondo me ti da anche degli errori che non vedi perchè hai i Warning disattivati :shock:

(e continuo a non capire perchè salvi la password nelle variabili di sessione, che sia in chiaro o no, non ha proprio senso :ghghgh:)

Link al commento
Condividi su altri siti

si ma session_start(); lo devi usare anche in questa pagina perchè altrimenti php credo che non istanzi oggetti di tipo $_SESSION.

giusto, lo stavo dando per scontato :ghghgh:

Secondo me ti da anche degli errori che non vedi perchè hai i Warning disattivati :shock:

attenzione perchè errori e avvisi non son la stessa cosa.

An  a tuesday keeps the doctor away.

proud member of < noi finti professionisti > club - tessera 044

Link al commento
Condividi su altri siti

attenzione perchè errori e avvisi non son la stessa cosa.

Si, si possono attivare e disattivare indipendentemente ma se sta usando MAMP per default li ha tutti disattivati :\

Link al commento
Condividi su altri siti

si raga sto usando mamp per la tempistica e po uun'altra cosa sesio_start() in quella pagina è messo all'inzio prima di qualsiasi tag... e poi non capisco, la password la posso togliere come variabile di sessione non incide sul funzionamento ?

•I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.

Link al commento
Condividi su altri siti

ragazzi dove c'è if ($Post) lo modifica in $post || $_SESSION['user']

e adesso funziona sulla home cioè se clicco dopo aver loggato su home mi rimane la sessione adesso devo provare sulle altre pagine !!! speriamo bene

•I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.

Link al commento
Condividi su altri siti

FUNZIONAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ce l'h fattaaaaaaaaa grazie a tutti siete fantastici, come avrete potuto notare dal codice i dati di sessione venivo spediti alla stessa pagine in cui li inserivo quindi dovevo aggiungere quello che ho scrito nel post precedente per rilvarli e continuare la sessioneeeeeeeeeeeeeeeeeeeeeeee

Grazie elpinko e pix77 soprattutto ! :ghghgh::dance::jason::dance:

•I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...