[Risolto][PHP & MYSQL] - Autenticazione

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
ing_info89
Prode Principiante
Messaggi: 234
Iscrizione: mercoledì 7 settembre 2011, 18:55

[Risolto][PHP & MYSQL] - Autenticazione

Messaggio da ing_info89 »

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
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
TommyB1992
Scoppiettante Seguace
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

Messaggio da TommyB1992 »

ing_info89
Prode Principiante
Messaggi: 234
Iscrizione: mercoledì 7 settembre 2011, 18:55

Re: [PHP & MYSQL] - Autenticazione

Messaggio da ing_info89 »

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?
Allegati
Schermata del 2018-09-04 12-14-42.png
ing_info89
Prode Principiante
Messaggi: 234
Iscrizione: mercoledì 7 settembre 2011, 18:55

Re: [PHP & MYSQL] - Autenticazione

Messaggio da ing_info89 »

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");
	}*/	
?>
Allegati
Schermata del 2018-09-04 12-56-40.png
ing_info89
Prode Principiante
Messaggi: 234
Iscrizione: mercoledì 7 settembre 2011, 18:55

Re: [PHP & MYSQL] - Autenticazione

Messaggio da ing_info89 »

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
Avatar utente
DoctorStrange
Imperturbabile Insigne
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

Messaggio da DoctorStrange »

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.
TommyB1992
Scoppiettante Seguace
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

Messaggio da TommyB1992 »

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

Codice: Seleziona tutto

  if(get_magic_quotes_gpc()){
      $username = stripslashes($username);
      $password = stripslashes($password);
   }
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");
Ultima modifica di TommyB1992 il martedì 4 settembre 2018, 16:16, modificato 1 volta in totale.
TommyB1992
Scoppiettante Seguace
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

Messaggio da TommyB1992 »

Questo non ha senso:

Codice: Seleziona tutto

   $result = mysql_query($conn,$query) or die("<p>Utente non presente: Effettuare iscrizione");
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>Errore query:" . mysql_error());
  if (!mysql_num_rows($result)) {
    exit("utente non presente bla bla bla...");
  }
ing_info89
Prode Principiante
Messaggi: 234
Iscrizione: mercoledì 7 settembre 2011, 18:55

Re: [PHP & MYSQL] - Autenticazione

Messaggio da ing_info89 »

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

Codice: Seleziona tutto

header("location: http://localhost/insideBrando/beginning.html");
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:

Codice: Seleziona tutto

header("location: http://localhost/insideBrando/scripts/welcome.php");
allora mi ridà pulita la pagina inerente al login.

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>
session.php

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");
   }
?>
logout.php

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");
	}*/	
?>
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 10 ospiti