[Risolto][PHP & MYSQL] - Autenticazione
-
- Prode Principiante
- Messaggi: 234
- Iscrizione: mercoledì 7 settembre 2011, 18:55
[Risolto][PHP & MYSQL] - Autenticazione
Ciao a tutti, sto cercando di scrivere uno script per l'autenticazione ed, essendo la prima volta che scrivo un sit, mi sto ponendo alcune domande. Ho cercato qualcosa su internet ma trovo solo roba inerente al php versione 7 mentre io sto usando la 5.6, quindi qualcuno potrebbe darmi una mano a scrivere la procedura di autenticazione?O per lo meno potrebbe indirizzarmi verso qualche sito che possa aiutarmi, che però usa php versione 5?
Il mio form di ACCESSO è formato da un campo "username" ed un campo "password", con un pulsante di "INVIO".
Grazie
Il mio form di ACCESSO è formato da un campo "username" ed un campo "password", con un pulsante di "INVIO".
Grazie
Ultima modifica di trekfan1 il martedì 4 settembre 2018, 20:13, modificato 2 volte in totale.
Motivazione: Non serve il tutto maiuscolo per il [Risolto], grazie
Motivazione: Non serve il tutto maiuscolo per il [Risolto], grazie
-
- Scoppiettante Seguace
- Messaggi: 857
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
-
- Prode Principiante
- Messaggi: 234
- Iscrizione: mercoledì 7 settembre 2011, 18:55
Re: [PHP & MYSQL] - Autenticazione
Grazie per la risposta, ma da questi errori che non riesco a risolvere. Poi quando interroga il database, chiede di selezionare l'id inerente all'username e pwd inseriti. Ma io ho strutturato la mia tabella del database senza un campo id. E' un errore questo?
-
- Prode Principiante
- Messaggi: 234
- Iscrizione: mercoledì 7 settembre 2011, 18:55
Re: [PHP & MYSQL] - Autenticazione
Questo è il codice di login che ho scritto, e mi da questo errore. L'utente che inserisco è presente nel database, pero non riesco a capire l'errore che mi da.
Codice: Seleziona tutto
<?php
//session_start();
//connessione ed selezione del database
$conn = mysql_connect('127.0.0.1','username','password') or die("<p> Error Connecting to Database" . mysql_error() . "</p>");
mysql_select_db('dbsite',$conn) or die("<p>Error selecting Database:" . mysql_error() . "</p>");
//salvataggio dei dati inseriti nel form e relativa interrogazione al database
$username = $_POST['username'];
$password = $_POST['password'];
//controllo ed elimina eventuali slash inseriti automaticamente da php
if(get_magic_quotes_gpc()){
$username = stripslashes($username);
$password = stripslashes($password);
}
//verifico la presenza dei campi obbligatori
if(!$username || !$password){
$messaggio = urlencode("Non hai inserito il nome o la password");
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
exit;
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$nome = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
// preparo ed invio la query
$query = "SELECT user_id FROM utenti WHERE username = '$username' AND password = '$password'";
$result = mysql_query($conn,$query) or die("<p>Utente non presente: Effettuare iscrizione");
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
if(mysql_num_rows($result)){
$row = mysql_fetch_assoc($result);
$_SESSION["logged"] = true;
$_SESSION['login_user'] = $username;
header("location: welcome.php"); //qui bisogna mettere il file dove indirizzare l'utente loggato
}else{
echo "Log In non effettuato";
}
/*$record = mysql_fetch_array($result);
if(!$record) {
$messaggio = urlencode('Nome utente o password errati');
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
} else {
session_start();
$_SESSION['logged'] = true;
$messaggio = urlencode('Login avvenuto con successo');
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
}*/
?>
-
- Prode Principiante
- Messaggi: 234
- Iscrizione: mercoledì 7 settembre 2011, 18:55
Re: [PHP & MYSQL] - Autenticazione
Ho risolto il problema del login, almeno spero. Pero non riesco ad indirizzare il sito nella pagina desiderata con la chiamata header("....."). Il file "welcome.php" che gli passo l'ho messo nella stessa directory di tutti gli altri script che ho scritto. Sbaglio a scrivere qualcosa?
Grazie
Grazie
- DoctorStrange
- Imperturbabile Insigne
- Messaggi: 2872
- Iscrizione: mercoledì 14 ottobre 2015, 9:33
- Desktop: Gnome3
- Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
- Sesso: Maschile
- Località: Roma, Italia
Re: [PHP & MYSQL] - Autenticazione
L'utente che stai usando per cercare di accedere a quel DB, ha tutti i GRANT necessari per leggere/scrivere sullo stesso DB? Magari è l'SQL che ti butta fuori perchè usi un utente che non ha abbastanza privilegi.
-
- Scoppiettante Seguace
- Messaggi: 857
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
Re: [PHP & MYSQL] - Autenticazione
Macche, se invia i dati senza inserire l'input è normale che dia i suoi errori.
Devi fare:
$username = trim($_POST['username'])
$username = !empy($_POST['username']) && $username != ""? $username : "";
e uguale per la password
e poi quella è la sintassi di mysqli_query e non mysql_query.
Devi fare: mysql_query('QUERY'); senza la connessione
===================
EDIT:
Questo è deprecato
E qui c'è un bug:
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
da sostituire con
$phpSelf = htmlspecialchars(basename($_SERVER["PHP_SELF"]))
header("location: $phpSelf?msg=$messaggio");
Devi fare:
$username = trim($_POST['username'])
$username = !empy($_POST['username']) && $username != ""? $username : "";
e uguale per la password
e poi quella è la sintassi di mysqli_query e non mysql_query.
Devi fare: mysql_query('QUERY'); senza la connessione
===================
EDIT:
Questo è deprecato
Codice: Seleziona tutto
if(get_magic_quotes_gpc()){
$username = stripslashes($username);
$password = stripslashes($password);
}
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
da sostituire con
$phpSelf = htmlspecialchars(basename($_SERVER["PHP_SELF"]))
header("location: $phpSelf?msg=$messaggio");
Ultima modifica di TommyB1992 il martedì 4 settembre 2018, 16:16, modificato 1 volta in totale.
-
- Scoppiettante Seguace
- Messaggi: 857
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
Re: [PHP & MYSQL] - Autenticazione
Questo non ha senso:
L'or die si triggera solo se c'è un errore nella query.
Se proprio ti serve una soluzione:
Codice: Seleziona tutto
$result = mysql_query($conn,$query) or die("<p>Utente non presente: Effettuare iscrizione");
Se proprio ti serve una soluzione:
Codice: Seleziona tutto
$result = mysql_query($conn,$query) or die("<p>Errore query:" . mysql_error());
if (!mysql_num_rows($result)) {
exit("utente non presente bla bla bla...");
}
-
- Prode Principiante
- Messaggi: 234
- Iscrizione: mercoledì 7 settembre 2011, 18:55
Re: [PHP & MYSQL] - Autenticazione
Il problema del loggaggio l ho risolto, infatti se metto un echo qualsiasi, e faccio le varie prove, va tutto bene. Non capisco perche invece se metto
allora dopo aver inserito username e password di un utente che è registrato dentro il data base, vengo reindirizzato nella homepage, mentre se modifico la seguente stringa in questo mondo:
allora mi ridà pulita la pagina inerente al login.
Vi metto anche i codici qui sotto:
welcome.php
session.php
logout.php
il file principale che effettua il login è il seguente:
login.php
Codice: Seleziona tutto
header("location: http://localhost/insideBrando/beginning.html");
Codice: Seleziona tutto
header("location: http://localhost/insideBrando/scripts/welcome.php");
Vi metto anche i codici qui sotto:
welcome.php
Codice: Seleziona tutto
<?php
include('session.php');
?>
<html>
<head>
<title>Welcome </title>
</head>
<body>
<h1>Welcome <?php echo $login_session; ?></h1>
<a href="http://localhost/insideBrando/scripts/logout.php">Sign Out</a>
</body>
</html>
Codice: Seleziona tutto
<?php
include('config.php');
session_start();
$user_check = $_SESSION['login_user'];
$ses_sql = mysql_query($db,"select username from utenti where username = '$user_check' ");
$row = mysql_fetch_array($ses_sql,MYSQL_ASSOC);
$login_session = $row['username'];
if(!isset($_SESSION['login_user'])){
header("location:http://localhost/insideBrando/scripts/login.html");
}
?>
Codice: Seleziona tutto
<?php
session_start();
if(session_destroy()) {
header("Location: http://localhost/insideBrando/scripts/login.html");
}
?>
il file principale che effettua il login è il seguente:
login.php
Codice: Seleziona tutto
<?php
session_start();
//connessione ed selezione del database
$conn = mysql_connect('127.0.0.1','user','pswd') or die("<p> Error Connecting to Database" . mysql_error() . "</p>");
mysql_select_db('dbsite',$conn) or die("<p>Error selecting Database:" . mysql_error() . "</p>");
//salvataggio dei dati inseriti nel form e relativa interrogazione al database
$username = trim($_POST['username']);
$password = trim($_POST['password']);
//controllo ed elimina eventuali slash inseriti automaticamente da php
if(get_magic_quotes_gpc()){
$username = stripslashes($username);
$password = stripslashes($password);
}
//verifico la presenza dei campi obbligatori
if(!$username || !$password){
$messaggio = urlencode("Non hai inserito il nome o la password");
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
exit;
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$nome = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
// preparo ed invio la query
$query = "SELECT * FROM utenti WHERE username = '$username' AND password = '$password'";
$result = mysql_query($query) or die("<p>Utente non presente: Effettuare iscrizione");
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
if(mysql_num_rows($result)){
$row = mysql_fetch_assoc($result);
$_SESSION["logged"] = true;
$_SESSION['login_user'] = $username;
header("location: http://localhost/insideBrando/beginning.html"); //qui bisogna mettere il file dove indirizzare l'utente loggato
//echo "Log In effettuato con successo";
}else{
echo "Log In non effettuato";
}
/*$record = mysql_fetch_array($result);
if(!$record) {
$messaggio = urlencode('Nome utente o password errati');
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
} else {
session_start();
$_SESSION['logged'] = true;
$messaggio = urlencode('Login avvenuto con successo');
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
}*/
?>
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 10 ospiti