[PHP] Domanda Login Page

EaRtHQuAkE

Nuovo Utente
4 Dic 2009
16
0
0
Salve a tutti,
Avrei un quesito da porvi... ho dei problemi con la mia pagina di login ovvero, la registrazione funziona e mi aggiunge i dati al database, ma la login page non mi lascia accedere cioe anche se metto i dati giusti me li da sbagliati... non capisco il perche, il dubbio che mi è venuto è di aver sbagliato con le variabili l'assegnazione o di aver sbagliato coi controlli tramite IF insomma non posso certo considerarmi un super esperto ma da qua non riesco proprio a tirarmi fuori.. è da 3 gg che ci provo ma niente... poi potrei avere anche un altra domanda di chiarimento ma una cosa alla volta :D

Oh, il sito è ancora in sviluppo quindi se andate a guardarlo non preoccupatevi se vedete robe strane :D tanto poi cambierà un po di roba :D quindi nn serve che curiosiate troppo xD

10 punti a chi mi risponde meglio XD XD XD

a si EDIT: non vi preoccupate se vi sembra che il codice sia scritto male cioe male indentato e i commenti messi male ma quello lo sistemerò quando riusciro a far funzionare sta dannata pagina xD

PHP:
<!-- HTML BEGIN -->
<html>
	<head> 
	<meta http-equic="Content-Type" content="text/html; charset=iso-8859-1">
	<title>~ BlooD HeArTHs ~ Login</title>
	</head>
		<body
		bgcolor=black
		text=yellow
		link=orange
		vlink=white
		alink=red>
                <?php 
                echo "<font face=Courier New><b>Data corrente:</b></font> " . date("d-n-y") . "<br />"; 
                echo "<font face=Courier New><b>Ora del server:</b></font> " . date("H.i.s") . "<br /><br />";
                ?>
		<p align="center"> <font size="16" face="Courier New">EaRTHeKnoLoGY Presents:</font> <br>
		<font size="12">~ BlooD HeArTHs ~</font> <br> </p>
                <hr noshade color="yellow" width="100%" />	
		</body>
<!-- END HTML -->


<!-- PHP BEGIN -->
                <?
                //SESSIONE
                session_start();
require('connect.php');
$selectQuery = mysql_query("SELECT username,password FROM utenti");
$records = mysql_fetch_array($selectQuery);
$username = $_POST['txtUsername'];
$password = $_POST['txtPassword'];
		?>
<!-- FORM HTML -->
<form action="login.php" method="POST">
<table border="0" align="center">
<thead>
      <tr>
      <th></th>
      <th></th>
      </tr>
</thead>
<tbody>
      <tr>
      <td>Username:</td>
      <td>
      <input type="text" name="txtUsername" value="" />
      </td>
      </tr>
      <tr>
      <td>Password:</td>
      <td>
      <input type="password" name="txtPassword" value="" />
      </td>
      </tr>
      <tr>
      <td colspan="2" align="center">
      <input type="submit" value="Login" name="btnEnter" />
      </td>
      </tr>
</form>
<form action="registrazione.php" method="POST">
<center>
      <tr>
      <td>
      <input type="submit" value="Registrazione" name="btnSubscribe" />
      </td>
      </tr>
</center>
</form>
</tbody>
</table>
<!-- END FORM HTML -->
<!-- PHP -->
<?
     if($username == $records['username'] && $password == $records['password']) {
          $URL = "http://bloodhearthz.altervista.org/home/home.php";
          header("Location: $URL");
     } else {
          echo("<br><center>Username o Password errati</center><br>");
     }
        
?>

<!-- END PHP -->	
                <script type="text/javascript">
	        function cookiedel() {
		setcookie("$username");
	        }
                </script>
	        <center><br><br><i><b>Cancella i Cookie! Clicca <a href="login.php" onlick="cookiedel()">qui!</a></i></b></center><br>
		</p>	
	 <?
       /*Cookie e Sessioni */        			
       //recupero lo username dalla querystring
	$Cusername = $_GET['txtUsername'];
       //memorizzo lo username in un cookie ed imposto la scadenza tra 24 ore
	setcookie("username_utente", $Cusername, time()+86400);
       //recupero il valore del cookie...
	$Cusername = $_COOKIE['username_utente'];
       //salvataggio dati in sessione
       $_SESSION['txtUsername'] = $username;
       $_SESSION['txtPassword'] = $password;	
	       ?>
<!-- END PHP -->
	<hr noshade color="yellow" width="100%" /><center><font size=4><i>NON SEI REGISTRATO? REGISTRATI <b>ORA!</b> CLICCA 
	<a href="registrazione_reg.php">QUI</a> PER REGISTRARTI!
</html>
 
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
a prima vista
1. aeader e setcookie devono essere messi prima di qualsiasi output html

http://www.php.net/manual/en/function.header.php

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

http://www.php.net/manual/en/function.setcookie.php

setcookie() defines a cookie to be sent along with the rest of the HTTP headers. Like other headers, cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including <html> and <head> tags as well as any whitespace.

2. non usare il tag breve <? ma <?php

3. gli if per user e pass vanno bene però dovresti metterili cosi dove fai la query

PHP:
if(isset($_POST['btnSubscribe'])){
  $selectQuery = mysql_query("SELECT username,password FROM utenti");
  $records = mysql_fetch_array($selectQuery);
  $username = $_POST['txtUsername'];
  $password = $_POST['txtPassword'];
  if($username == $records['username'] && $password ==  $records['password']) {
   $URL = "http://bloodhearthz.altervista.org/home/home.php";
   header("Location: $URL");//a parte l’header che non dovrebbe funzionare
 } else {
   echo("<br><center>Username o Password errati</center><br>");
 }
}//fine if controllo se submit

poi per il resto a dopo il ponte;)
 

EaRtHQuAkE

Nuovo Utente
4 Dic 2009
16
0
0
Grazie per la risposta ma ora nn so bo mi da ancora errori

praticamente io per fare un controllo ho fatto cosi:

PHP:
<?php
if(isset($_POST['btnSubscribe'])){
  $selectQuery = mysql_query("SELECT username,password FROM utenti");
  $records = mysql_fetch_array($selectQuery);
  $username = $_POST['txtUsername'];
  $password = $_POST['txtPassword']; 
} else { echo "ERRORE";
}
if(isset($_POST['txtUsername'])) {
echo "CIAO A";
} else {
echo "CIAO B";
}
if(isset($_POST['txtPassword'])) {
echo "LOL 1";
} else {
echo "LOL 2";
}
     if($username == $records['username'] && $password == $records['password']) {
          $URL = "http://bloodhearthz.altervista.org/home/home.php"; 
          echo "OK";       
     } else {
     echo "Username o password errati";
     }
?>

che mi fa capire se lui riconosce txtUsername e txtPassword (e li riconosce) e mi fa capire se mi riconosce btnSubscribe (nn me lo riconosce nn so xke, ho provato anche con btnEnter) e mi dice se username e password corrispondo ai dati nel db... e mi dice OK (echo OK) quindi praticamente mi riconosce che ci sono txtUsername e txtPassword e che i dati corrispondo al db ma nn mi riconosce il bottone di login (nn so xke) e quindi nn posso andare avanti
se metto header, sia che lo metta in cima alla pagina che alla fine o in mezzo, nn mi funziona
boh!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se non hai risolto.
intanto ho notato una cosa: perchè fai due form nella stessa pagina con due indirizzi diversi?
se hai due form nella stessa pag devi dare un nome (diverso) a ciascun form
comunque un minuto di pazienza e ti invio come faccio io (anche se non è forse la soluzione migliore...alessandro1997 mi bacchetta)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
io generalmente faccio tre pagine:
la prima col form di log
la seconda di "transito"
la terza è la pagina riservata con tutto quello che deve avere
prova a studiartela un momentino, se non ho fatto errori nello scrivere dovrebbe funziare
--------------------------------------------------------------
1° pag log.php
PHP:
<?php
//inizializzo le sessioni
if(!isset($_SESSION)){
session_start ();
}
//inizializzo una sessione che mi servirà nella pag di transito.php
$_SESSION['transito']="apritiSesamo";//o altra parola a scelta
?>

<!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>Documento senza titolo</title>
</head>
<body>
<form name="form1" method="post" action="transito.php">
<table width="702" border="0" cellspacing="2" cellpadding="0">
  <tr>
    <td width="209">username</td>
    <td width="487"><input name="username" type="text" id="username" size="12" maxlength="12"></td>
  </tr>
  <tr>
    <td>password</td>
    <td><input name="password" type="text" id="password" size="12" maxlength="12"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="log" value="loggati"></td>
  </tr>
</table>

</form>
</body>
</html>

2° pag di transito
PHP:
<?php
//in questa pagina NON metto nulla che sia html
if(!isset($_SESSION)){
session_start ();
}
if(isset($_SESSION['transito']) && $_SESSION['transito']=="apritiSesamo"){
//se la sessione è inizializzate faccio le verifiche di user e pass
//cambio il valore della sessione che utilizzerò nella pag riservata
	$_SESSION['transito']="chiuditiSesamo";
	if(isset($_POST['log']) && trim($_POST['username']) !="" &&  trim($_POST['username']) !=""){
		//ho premuto il submit e user e pass non sono vuote
		//metto i parametri di connessione al db
		//.........parametri.............
		$usn=strip_tags($_POST['username']);//tolgo caratteri che possono essere dannosi, tag
		$pass=strip_tags($_POST['password']);
		//ricerco l'user e la password
		$query= "SELECT usn, pass FROM utenti WHERE usn=".$usn." AND pass=".$pass;
		$q=mysql_query($query);
		$esistono=mysql_num_rows($q);//verifico che esistano
		if($esistono > 0){//potrei mettere ==1
			//se esistono accedo alla pagina riservata
			header("Location: pagina_riservata.php");
		}else{//usn e/o pass non esistono o non coincidono
			header("Location: log.php");//oppure altra pagina es. index.php
		}//fine if/else verifica usn e pass
	}else{
		//ho dato il submit ma o usn o pass sono vuote
		header("Location: log.php");//oppure altra pagina es. index.php
	}//fine if/else submit
	//sono arrivato a questa pagina senza passare dall pag di log es chimandola dal bw
	// es. scrivendo sul bw http://mio_sito.it/riservate/log.php
	unset ($_SESSION['transito']); //annullo la sessione
	header("Location: index.php");
}//fine if accesso - fine pag transito.php
?>

pag riservata.php

PHP:
<?php
if(!isset($_SESSION)){
session_start ();
}
//se la sessione esiste ed uguale a chiuditiSesamo
if(isset($_SESSION['transito']) && $_SESSION['transito']=="chiuditiSesamo"){
/* *************************************************************************
qui tutto quello che serve php, html.....................................
*************************************************************************** */
}else{
	//se sono qui vuol dire che sono arrivato senza passare da log e transito.php
	unset ($_SESSION['transito']); //annullo la sessione
	header("Location: index.php");
}
?>

se non funzia sono qui
p.s.
devi adattare i nomi a quelli che usi tu
 

EaRtHQuAkE

Nuovo Utente
4 Dic 2009
16
0
0
ciao
se non hai risolto.
intanto ho notato una cosa: perchè fai due form nella stessa pagina con due indirizzi diversi?
se hai due form nella stessa pag devi dare un nome (diverso) a ciascun form
comunque un minuto di pazienza e ti invio come faccio io (anche se non è forse la soluzione migliore...alessandro1997 mi bacchetta)

ciao, ho un form coi dati per il login, e un bottone per registrarsi... cioe hai ad esempio:

Inserisci i dati richiesti
Username:
Password:

Registrazione <-- questo serve perche se non sei registrato ci clicchi e ti registri nella pagina registrazione.php capito? :eek:

Comunque grazie per l'aiuto poi mi studio le tue pagine e vedo se riesco a risolvere grazie :D
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
l'avevo intuito, ma perchè non fai un semplice link

<a href="registrati.php">se non sei registrato registrati</a>

?

nella pag registrati fai il tuo form di inserimento dati
 

EaRtHQuAkE

Nuovo Utente
4 Dic 2009
16
0
0
ciao
l'avevo intuito, ma perchè non fai un semplice link

<a href="registrati.php">se non sei registrato registrati</a>

?

nella pag registrati fai il tuo form di inserimento dati
ciao,
immagino che lo avessi intuito :D ma mi sembrava piu carino un bottone

comunque si metterò un link u.u ma secondo te puo essere anche quello il problema? :p

edit: comunque la pagina di registrazione mi funziona correttamente per ora è solo quella di login che da problemi
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
no, l'errore è qui, tu fai nella pag di login

$selectQuery = mysql_query("SELECT username,password FROM utenti");
$records = mysql_fetch_array($selectQuery);

cioè fai la query, poi estrai i record, ma quali record? se tu avessi un solo record
andrebbe bene, ma così non sai quale record estrai. anzi ti dirò di più estrai sempre il primo, per
cui quando poi esegui il confronto

if($username == $records['username'] && $password == $records['password']) {

confronti quello che hai immesso con il primo record estratto, se per puro caso quanto hai immesso
corrisponde al primo record passi altrimenti no anche se usn e pass esistono.

per questo ti ho messo la query con la condizione WHERE, cioè verifichi se esiste un record che soddisfi
la condizione e se si il numero di record è 1, altrimenti 0.
 

EaRtHQuAkE

Nuovo Utente
4 Dic 2009
16
0
0
ciao
no, l'errore è qui, tu fai nella pag di login

$selectQuery = mysql_query("SELECT username,password FROM utenti");
$records = mysql_fetch_array($selectQuery);

cioè fai la query, poi estrai i record, ma quali record? se tu avessi un solo record
andrebbe bene, ma così non sai quale record estrai. anzi ti dirò di più estrai sempre il primo, per
cui quando poi esegui il confronto

if($username == $records['username'] && $password == $records['password']) {

confronti quello che hai immesso con il primo record estratto, se per puro caso quanto hai immesso
corrisponde al primo record passi altrimenti no anche se usn e pass esistono.

per questo ti ho messo la query con la condizione WHERE, cioè verifichi se esiste un record che soddisfi
la condizione e se si il numero di record è 1, altrimenti 0.

ma infatti io avevo seguito la guida da html.it e da mrwebmaster.it e ho visto che si puo usare anche il WHERE peccato che mi desse l'errore T_WHITESPACE_AND_UNCASPED una cosa simile non me lo ricordo esattamente insomma penso fosse un errore perche scrivevo su piu righe il codice perche su una nn ci stava nell'editor di altervista quindi nn sapevo come fare bo u.u
 
Discussioni simili
Autore Titolo Forum Risposte Data
booklisa [PHP] Domanda scema di sintassi PHP 2
booklisa [PHP] Domanda semplice (apparantemente) PHP 4
delphorm [PHP] Domanda stupida (credo) PHP 10
bit77 Domanda! ho un file xml e devo estrapolare determinati testi, php è la soluzione? PHP 0
emanuelevt Domanda generica su php / framework / risorse online PHP 2
asevenx domanda su WHERE collegato a form PHP PHP 1
M domanda, javascript ,php ,html..... Javascript 16
E Domanda countdown PHP PHP 3
V Domanda importante su un vostro Php Script PHP 1
E Domanda di sicurezza php guestbook PHP 0
G Domanda PHP-MySQL PHP 16
peppoweb Upload FTP da PHP - Domanda PHP 1
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3

Discussioni simili