dovè l'errore nella pagina di login?

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ciao, non sapevo che titolo dare alla discussione.
Vengo al problema, sono al termine o quasi della configurazione del login per il mio sito ma nonostante tutto non riesco a venirne a capo. Vi allego il codice, qualcuno saprebbe dirmi dove sbaglio?
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--#include virtual="/riservato/_private/logon.inc"-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Login - Biblionet</title>
<link href="css/reset.css" type="text/css" rel="stylesheet"/>
<link href="css/Master.css" type="text/css" rel="stylesheet"/>
<link href="css/formrealtime.css" type="text/css" rel="stylesheet"/>
<link href="css/style.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.YIWpasswordStrongTester.js"></script>
<style type="text/css">
#result
{
	border: 1px solid gray;
	padding: 2px;
	width: 200px;
	height: 10px;
}
.radius{
	-moz-border-radius: 6px;
	-webkit-border-radius: 6px;
	border-radius: 6px;
}
</style>

</head>
<body>
<div id="contenitore">

<?php

include 'header3.php';

?>
           <div id="contenuto_reg" class="clearfix">

<?php
		// Azione per il login3.php?azione=login
			if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){
				if(!isset($_POST['invia'])){
?>
		    <div id="content">

            <form id="jform" action="login3.php" method="post">
	            <fieldset>
                    <legend>Login</legend>
                    <p>
                		<label for="username" class="block">Username</label>
						<input type="text" name="username" id="username" value=""/>
                	</p>
                	<p>
                        <label for="password" class="block">Password:</label>
                        <input type="password" name="password" id="password" />
                    </p>
                	<p>
					<button type="submit" id="send" name="invia">Entra</button>
   					</p>
            </form>
<?php
				} else {

					$username = mysql_real_escape_string(stripslashes(strtolower($_POST['username'])));
					//$username = mysql_real_escape_string(stripslashes((strtolower($username)))); //salvo il nickname tutto in minuscolo onde evitare problemi.
					$password = mysql_real_escape_string(stripslashes($_POST['password']));

					if($username == "" || $password == ""){

						echo "Devi compilare tutti i campi";

					} else {

						$password_crypt = md5($password);

						$recuperadati = ($mysqli->query("SELECT * FROM biblionet_nuova_ok WHERE username = '$username' AND password = '$password_crypt'"));
						//$recuperadati = mysql_query("SELECT * FROM biblionet_nuova_ok WHERE username = '$username' AND password = '$password_crypt'");

						if ($verificadati = (($recuperadati->num_row == 1))){
							

						//$verificadati = mysql_num_rows($recuperadati);

						//if($verificadati == 1) {

							$sessione = mysql_fetch_array($recuperadati);
							$_SESSION['utente'] = $sessione['username'];
							echo '<div id="login">
							<p><h3>Ciao, '.$username.'</h3></p>
							</div>';
							echo "Login effettuato con successo!";
							header("Refresh: 3; URL= Newindex.php");

						} else {

							echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, Non abbiamo nessuno registrato con questi dati. Riprova
							 ad inserire i dati, oppure <a href="TEST%20FORM%20REAL%20TIME.php"> Registrati</a>, &egrave gratis!
							Grazie dallo staff Biblionet</h3></p></div>';
							echo "<meta http-equiv='Refresh' content='3; URL=Newindex.php'>";
						}

					}

				}

				// Azione del logout
			} else {

				if(isset($_GET['azione']) && ($_GET['azione'] == 'logout')){

					$_SESSION=array();
					//session_destroy();
					echo "Logout effettuato con successo!";
					header("Refresh: 3; URL= Newindex.php");

				}
			}


?>
		</div> <!--chiusura content-->

            <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" charset="utf-8"></script>
            <script type="text/javascript" src="js/validation2.js" charset="utf-8"></script>

        </div><!--contenuto-->

</div><!--contenitore-->
		<div class="vuoto"></div>
      	<div id="footer"><p>Copyright - Tutti i diritti sono riservati - E' vietata la riproduzione anche parziale</p></div>

</body>
</html>
quando clicco su invia senza inserire valori non ottengo nessun errore, quando li inserisco a sono corretti in quanto nel db ho quei dati la pagina non cambia. Sia inserendo il nome della pagina cioè login3.php sia
PHP:
<form id="jform" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post">

Grazie:book::book:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
non ho mai usato mysqli, però così a naso prova a modificare la riga
PHP:
if ($verificadati = (($recuperadati->num_row == 1))){
in
PHP:
if ($recuperadati->num_row == 1){
secondo me c'è qualcosa lì
prova mal che vada non funzia
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ciao Borgo, ho provato il tuo codice, ma nulla! Come se non avessi fatto niente. Sia come prima sia con il codice che mi hai suggerito tu quando clicco su invia la pagina non cambia e rimane così ferma. Non ho errori non ho avvisi. Cosa posso fare per visualizzare a video un qualsiasi errore?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
provo a darci un occhio meglio, pero se rieco a far qualcosa poi a te sistemarlo (la programmazione a oggetti mi sta sul c...o)
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ma stai utilizzando mysql o mysqli? Esegui la query con mysqli e fai il fetch con mysql, inoltre anche prima fai l'escape con mysql
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ma stai utilizzando mysql o mysqli? Esegui la query con mysqli e fai il fetch con mysql, inoltre anche prima fai l'escape con mysql

Avete ragione ragazzi ma già mastico poco mysql, poi con l'arrivo di mysqli è difficile capire le differenze. Io dovrei usare mysqli ma capita a volte di usare la "vecchia" versione, dovrei fare il fetch con mysqli forse è li il problema? :crying::crying:
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Avete ragione ragazzi ma già mastico poco mysql, poi con l'arrivo di mysqli è difficile capire le differenze. Io dovrei usare mysqli ma capita a volte di usare la "vecchia" versione, dovrei fare il fetch con mysqli forse è li il problema? :crying::crying:
Se stai utilizzando mysqli correggi mysql_real_escape_string() con $mysqli->real_escape_string() e mysql_fetch_array() con
PHP:
$sessione = $recuperadati->fetch_array();

Inoltre in questa parte non sono necessarie cosi tante tonde
PHP:
$recuperadati = $mysqli->query("SELECT * FROM biblionet_nuova_ok WHERE username = '$username' AND password = '$password_crypt'") or die($mysqli->error); 

if ($recuperadati->num_rows == 1){

ps: nell'ultimo è num_rows no num_row e ti ho aggiunto il controllo errori
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Intanto ti ringrazio molto, rimettoil codice corretto, ma non funziona ancora purtroppo
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--#include virtual="/riservato/_private/logon.inc"-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Login - Biblionet</title>
<link href="css/reset.css" type="text/css" rel="stylesheet"/>
<link href="css/Master.css" type="text/css" rel="stylesheet"/>
<link href="css/formrealtime.css" type="text/css" rel="stylesheet"/>
<link href="css/style.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.YIWpasswordStrongTester.js"></script>
<style type="text/css">
#result
{
	border: 1px solid gray;
	padding: 2px;
	width: 200px;
	height: 10px;
}
.radius{
	-moz-border-radius: 6px;
	-webkit-border-radius: 6px;
	border-radius: 6px;
}
</style>

</head>
<body>
<div id="contenitore">

<?php

include 'header3.php';

?>
           <div id="contenuto_reg" class="clearfix">

<?php
		// Azione per il login3.php?azione=login
			if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){
				if(!isset($_POST['invia'])){
?>
		    <div id="content">

            <form id="jform" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post">
	            <fieldset>
                    <legend>Login</legend>
                    <p>
                		<label for="username" class="block">Username</label>
						<input type="text" name="username" id="username" value=""/>
                	</p>
                	<p>
                        <label for="password" class="block">Password:</label>
                        <input type="password" name="password" id="password" />
                    </p>
                	<p>
					<button type="submit" id="send" name="invia">Entra</button>
   					</p>
            </form>
<?php
				} else {

					$username = $mysqli->real_escape_string(stripslashes(strtolower($_POST['username'])));
					//salvo il nickname tutto in minuscolo onde evitare problemi.
					$password = $mysqli->real_escape_string(stripslashes($_POST['password']));

					if($username == "" || $password == ""){

						echo "Devi compilare tutti i campi";

					} else {

						$password_crypt = md5($password);

						$recuperadati = $mysqli->query("SELECT * FROM biblionet_nuova_ok WHERE username = '$username' AND password = '$password_crypt'") or die($mysqli->error);

						if ($recuperadati->num_rows == 1){


							$sessione = $recuperadati->fetch_array();
							$_SESSION['utente'] = $sessione['username'];
							echo '<div id="login">
							<p><h3>Ciao, '.$username.'</h3></p>
							</div>';
							echo "Login effettuato con successo!";
							header("Refresh: 3; URL= Newindex.php");

						} else {

							echo '<div id="errore"><p><h3>Probabilmente qualcosa &egrave; andato storto, Non abbiamo nessuno registrato con questi dati. Riprova
							 ad inserire i dati, oppure <a href="TEST%20FORM%20REAL%20TIME.php"> Registrati</a>, &egrave gratis!
							Grazie dallo staff Biblionet</h3></p></div>';
							echo "<meta http-equiv='Refresh' content='3; URL=Newindex.php'>";
						}

					}

				}

				// Azione del logout
			} else {

				if(isset($_GET['azione']) && ($_GET['azione'] == 'logout')){

					$_SESSION=array();
					echo "Logout effettuato con successo!";
					header("Refresh: 3; URL= Newindex.php");

				}
			}


?>
		</div> <!--chiusura content-->

            <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" charset="utf-8"></script>
            <script type="text/javascript" src="js/validation2.js" charset="utf-8"></script>

        </div><!--contenuto-->

</div><!--contenitore-->
		<div class="vuoto"></div>
      	<div id="footer"><p>Copyright - Tutti i diritti sono riservati - E' vietata la riproduzione anche parziale</p></div>

</body>
</html>

c'è qualcosa che posso fare ancora?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Dato che prima eri un po indeciso sei sicuro di aver stabilito una connessione con $mysqli? Comunque ti da qualche errore particolare? Fino a dove arriva, e inoltre hai inizializzato la sessione?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Allora, la connessine è ok anche perchè nel form di registrazione compilo tutti i campi, riesco ad inviare la mail, inserisco i dati nel db e li sposto nella tabella definitiva dopo aver confermato la mail.
questo è il file config.php
PHP:
<?php
	//function connect() {
	$mysqli = new mysqli('localhost', 'root', 'pass', 'biblio_nuova');

	if (!$mysqli) {
		printf('Impossibile connettersi al Database %s\n', mysqli_connect_error());
		exit();
	} else {
		$mysqli->set_charset('utf8');
	}

?>

mentre nel file header che comprende il menù superiore con anche il link al form o alla pagina di login ho inserito questo prima del codice html
PHP:
<?php

	include_once 'config2.php';
	session_start();


?>
Credo che sia tutto corretto. Che dici?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
attento session_start() deve venire prima di qualsiasi output html

PHP:
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- ecc.... ->
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
ciao
attento session_start() deve venire prima di qualsiasi output html

PHP:
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- ecc.... ->

Quindi mi converrebbe mettere nel codice header anche la parte del codice html? con i css e robe varie?
Altrimenti la session_start non parte per prima.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
no no, come hai fatto nel primo script che hai postato, soltanto session_start (tra i tag php) da inserire prima del doctype, e prima del <?php che racchiude session_start nemmeno uno spazio
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ok ma se io volessi che ogni singola pagina fosse messa in sessione dovrei mettere session_start in ogni pagina e dovrà essere la prima cosa. Quindi dicevo se il file header, che è il file dove trovo il menù e le voci di accesso, lo completo anche con il codice
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--#include virtual="/riservato/_private/logon.inc"-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Login - Biblionet</title>
<link href="css/reset.css" type="text/css" rel="stylesheet"/>
<link href="css/Master.css" type="text/css" rel="stylesheet"/>
<link href="css/formrealtime.css" type="text/css" rel="stylesheet"/>
<link href="css/style.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.YIWpasswordStrongTester.js"></script>

etc etc, io posso inserire la session_start senza doverla riscrivere ogni volta per ogni pagina. E' corretto il mi ragionamento?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Ok ma se io volessi che ogni singola pagina fosse messa in sessione dovrei mettere session_start in ogni pagina e dovrà essere la prima cosa. Quindi dicevo se il file header, che è il file dove trovo il menù e le voci di accesso, lo completo anche con il codice
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--#include virtual="/riservato/_private/logon.inc"-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Login - Biblionet</title>
<link href="css/reset.css" type="text/css" rel="stylesheet"/>
<link href="css/Master.css" type="text/css" rel="stylesheet"/>
<link href="css/formrealtime.css" type="text/css" rel="stylesheet"/>
<link href="css/style.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.YIWpasswordStrongTester.js"></script>

etc etc, io posso inserire la session_start senza doverla riscrivere ogni volta per ogni pagina. E' corretto il mi ragionamento?
O crei una struttura dinamica per le pagine, o lo inserisci in ognuna oppure modifichi nella configurazione il session.auto_start da 0 a 1

Nel file header in questo caso prima dovresti mettere session_start() e poi l'head html di base e includerla nelle altre pagine
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
ma se devi andare a toccare il php.ini in locale lo puoi fare di sicuro, ma in remoto non è detto che sia permesso
quindi meglio in ogni pagina o come ha detto paperino in un file da includere, basta che sia all'inizio
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Cosa intendi per struttura dinamica? In realtà non è sta grande fatica aggiungere la session_start(), è solo un piccolo vezzo diciamo.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Lasciamo stare il problema della sesin_start() che comunque si può risolvere, qualcuno sa dirmi dove posso trovare l'errore, nel caso ce ne fosse uno?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
metti i var dump in giro e verifica cosa risulta, ti faccio un esempio
PHP:
<?php
//....
var_dump($_POST['username']);
$username = mysql_real_escape_string(stripslashes(strtolower($_POST['username'])));
var_dump($username);
//....
?>
se il var dump del post e dell'username danno come risultato quello che vorresti li togli e passi alla password
se invece (es) il primo ti da NULL devi verificare perche non trasmette il post
e così via sino a che non hai "esplorato" tutto lo script
altro esempio
var_dump($recuperadati);
se ti da bool false vuol dire che non fa la query se ti da reseorce va bene
ecc...
verificando ad una ad una tutte le variabili e istruzioni dovresti capire cosa non va
 
Discussioni simili
Autore Titolo Forum Risposte Data
A dovè il database? Database 0
felino Windows 7: errore 80072EFE su Windows Update Windows e Software 1
A errore http://datatables.net/tn/7 PHP 4
M Errore visualizzazione meta tag title e description SEO e Posizionamento 1
A Errore durante il salvataggio Photoshop 0
M Errore configurazione motion detection nvr Hikvision DS-7616 IP Cam e Videosorveglianza 0
voldemort [c] Errore di segmentazione (core dump creato) C/C++ 1
T SSD - errore sistema Hardware 2
R Navigare sito con cURL, mi restituisce errore PHP 0
L File CSV con app inventor da errore Sviluppo app per Android 2
A Errore visualizzazione selezione testo Photoshop 0
S Errore PHP - Notice: Undefined index ... PHP 14
U Campo vuoto data errore Fatal error: PHP 2
R Errore UPDATE tabella mysql PHP 1
R W10 Segnalazione di errore su terminale USB Windows e Software 0
G non riesco a capire quale sia l'errore [SQL] MySQL 2
I Errore 80040220 nella newsletter con paginazione Classic ASP 0
E Errore di lettura php in html PHP 8
A php metodo post jquery non da mai errore jQuery 4
W Errore di run-time di Microsoft VBScript error '800a0035' Impossibile trovare il file Classic ASP 0
B Errore unexpected '$variabile' (T_VARIABLE) in your code on line PHP 2
M errore dopo passaggio Php 7.2 PHP 6
S -> Errore PHP 8
S Errore "ftp_put(): Can't open that file: Permission denied" PHP 1
P Errore telecamere hdcvi dahua IP Cam e Videosorveglianza 16
L form multipla php sql,errore in inserimento MySQL 0
M Errore JavaScript per php [objeto HTMLParagraphElement] PHP 0
F [PHP]Errore registrazione PHP 8
MarcoGrazia [PHP] Download di file con errore all'interno. PHP 1
V [ORACLE] Errore ora-06512 at sys.utl_file Oracle 0
A [WordPress] Errore Plugin WordPress 0
P [WordPress] Messaggio di errore in file style.css WordPress 0
G [Javascript] Errore inserimento dati Backend Node.js e workbench Javascript 1
M [PHP] WS-Security errore PHP 0
E Errore configurazione 18 Dahua Dome POE IP Cam e Videosorveglianza 6
M [PHP] Errore di percorso, file not found PHP 3
MrSab [MySQL] Foreign key errore MySQL 5
D Acer errore 0701: USB Over Current... Hardware 0
gandalf1959 Errore di connessione a DB MySql PHP 5
ANDREA20 errore php PHP 1
N [PHP] ERRORE: SyntaxError: Unexpected token N in JSON at position 1 PHP 0
Tommy03 Errore invio email con PHP PHP 1
Max 1 Errore driver con lettore di smart card Hardware 6
Shyson [PHP] Errore inspiegabile PHP 1
A Errore NET::ERR_CERT_COMMON_NAME_INVALID SEO e Posizionamento 0
A index.php errore PHP 3
M Errore pagina php 'Cannot detect primary key' PHP 8
Tommy03 [PHP] Errore query selezione avg PHP 0
L [Java] Errore json conversione Java 0
L [PHP] Errore 410 Gone... PHP 1

Discussioni simili