Problema codice PHP

di il
10 risposte

Problema codice PHP

Salve ragazzi, sto implementando un form di login che prende in input username,password ed email di un utente, e successivamente registra quest'ultimo all' interno di un database.
Tuttavia, al momento dell' esecuzione viene solo stabilita la connessione con il DB, ma non viene inserito nulla al suo interno. Ho provato a cercare su internet le cause senza esiti positivi. Ho controllato più volte la sintassi, ma sembra essere corretta. Spero che qualcuno sappia darmi una mano! Grazie.
Codice HTML

<html>
<head>
<meta charset='UTF-8'>
<title>Sistema di login</title>
<style>
	form{
		display:flex;
		flex-direction: column;
		width:300px;
	}
	body{
		display:flex;
		justify-content:center;
	}
	form >input{
		text-align:center;
		margin-bottom:10px;
	}
</style>
</head>
<body>
	<form action="input.php" method="POST">
	<h2>Registrati</h2>
	<label for="username">Username</label>
	<input type="text" name="username" id="username" required></input>
	<label for="password">Password</label>
	<input type="password" name="password" id="password" required></input>
	<label for="email">Email</label>
	<input type="text" name="email" id="email" required></input>
	<input type="submit" value="conferma" id="conferma"></input>
	</form>
</body>
</html>
Codice PHP

<?php
	$host="localhost";
	$user="root";
	$pass="";
	$db="anagrafica";
	
	$conn = mysqli_connect($host,$user,$pass);
	if(!$conn){
		die("Errore di connessione: ".mysql_error());
	}else{
		die("Connessione stabilita");
	}
	mysql_select_db($db);
	
	$username=$_POST['username'];
	$password=$_POST['password'];
	$email=$_POST['email'];
	
	$sql= "INSERT INTO utenti (username,password,email) VALUES ('$username','$password','$email')";
	$result=mysql_query($sql);
	if($result){
		echo "Utente aggiunto correttamente";
	}else{
		echo "Utente non aggiunto correttamente!!";
	}

?>

10 Risposte

  • Re: Problema codice PHP

    Potrebbe esserlo nel caso si usi l'estensione mysqli e non in combinazione con l'estensione mysql.
    Nel connect accedi al server mysql ma non al database, non saprei se lato server mysql se esiste il database anagrafica come predefinito è equivalente anche in php.
    https://www.php.net/manual/en/mysqli.select-db.ph puoi usare questa funzione per rendere il database come predefinito altrimenti il 4 parametro di connect è il database predefinito per quella connessione.
    Poi puoi provare in cima
    error_reporting(PHP_INT_MAX);
    e se il display_errors è su schermo (non stderr) li mostra, altrimenti su stderr su file.
  • Re: Problema codice PHP

    Stai usando mysql_query, deprecato, con una connessione mysqli.
    Inoltre il codice non ha alcuna protezione dalle SQL Injection.
    Prendi spunto da qui:
    https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
  • Re: Problema codice PHP

    Prova a passare la connessione come secondo parametro, così come indicato nella documentazione: potrebbe essere quello.

    Ciao!
  • Re: Problema codice PHP

    Ciao a tutti! Ho provato a mettere insieme le soluzioni che mi avete proposto, ma nulla da fare continua ancora a dare lo stesso problema.
    @Toki ho letto l' articolo riguardante la SQLinjection non essendone a conoscenza, tuttavia non ho apportato modifiche al codice in quanto si tratta di una semplice esercitazione,ma buono a sapersi!
    
    <?php
    	$host="localhost";
    	$user="root";
    	$pass="";
    	$db="anagrafica";
    	
    	$conn = mysqli_connect($host,$user,$pass);
    	if(!$conn){
    		die("Errore di connessione: ".mysql_error());
    	}else{
    		die("Connessione stabilita");
    	}
    	mysqli_select_db($conn,$db);
    	
    	$username=$_POST['username'];
    	$password=$_POST['password'];
    	$email=$_POST['email'];
    	
    	$sql= "INSERT INTO utenti (username,password,email) VALUES ('$username','$password','$email')";
    	$result=mysqli_query($sql,$conn);
    	if(!$result){
    		echo "Utente aggiunto correttamente";
    	}else{
    		echo "Utente non aggiunto correttamente!!";
    	}
    
    ?>
    
  • Re: Problema codice PHP

    Dany30 ha scritto:


    Ho provato a mettere insieme le soluzioni che mi avete proposto, ma nulla da fare continua ancora a dare lo stesso problema.
    Una domanda: come fai a determinare che la connessione al DB avvenga correttamente?
  • Re: Problema codice PHP

    Ciao. Riesco e determinare che la connessione avvenga correttamente perchè nel momento dell' esecuzione del codice php viene stampato a schermo "Connessione stabilita".
    [img]


    Allegati:
    29909_d677d6f9dd6078cdd8310fef493acf5f.jpg
    29909_d677d6f9dd6078cdd8310fef493acf5f.jpg
  • Re: Problema codice PHP

    Dany30 ha scritto:


    Ciao. Riesco e determinare che la connessione avvenga correttamente perchè nel momento dell' esecuzione del codice php viene stampato a schermo "Connessione stabilita".
    Ok, ma se non ti viene stampato nient'altro, vuol dire che non arriva alla parte relativa agli utenti, nella quale vedresti l'esito di questa operazione (positiva o negativa).

    La pagina quindi si ferma alla stampa del messaggio, e infatti hai scritto:
    
    die("Connessione stabilita");
    
  • Re: Problema codice PHP

    Si, infatti questo è il motivo per il quale ho scritto il forum.
  • Re: Problema codice PHP

    Dany30 ha scritto:


    Si, infatti questo è il motivo per il quale ho scritto il forum.
    Tu hai scritto che si collega al DB ma non inserisce nulla all'interno: leggendo questa frase, una persona capisce che le istruzioni vengano eseguite senza errori, ma che alla fine nel DB non ritrovi l'utente che hai inserito, o che i dati non sono quelli che ti aspetti, o che si verifichi un errore nella fase di inserimento.

    Se hai messo istruzioni per mostrare un messaggio a seconda di quello che accade quando inserisci i dati, e non arrivi a visualizzare nessuno di quei due messaggi, né l'uno né l'altro, significa che il programma si ferma prima, e infatti nel tuo codice tu mostri la connessione andata a buon fine ma con la , a cui ti lascio il piacere di scoprire qual è l'effetto che fa.

    In breve, il programma fa esattamente ciò che tu gli hai detto di fare: mostra il messaggio di connessione corretta ed esce, perché glielo hai detto tu.

    Ciao!
  • Re: Problema codice PHP

    Ok si effettivamente hai ragione, pensavo che le istruzioni dopo le venissero eseguite.
    Sto seguendo dei video su PHP e pertanto non conoscevo bene la funzione die();
    Adesso l' ho rimossa sostituendola con echo e tutto funziona!
    Grazie.
Devi accedere o registrarti per scrivere nel forum
10 risposte