Errore nell'invio query

blacksbugs

Utente Attivo
18 Feb 2013
30
0
0
Salve ho fatto un semplice script in php per una semplice registrazione, sembra andare tutto bene ma non mi scrive i dati sul database.
Sbaglio la query oppure è il codice che devo ricontrollare?
Grazie.

PHP:
if(empty($errori)){
	$query_registrazione = mysql_query("INSERT INTO utenti (username,password,email) VALUES ('$username', MD5'($password)','$email'"); 
		if(isset($query_registrazione)){
			$_SESSION["logged"]=true;
			header("Location:successo.php");
		} else {
			echo "query non eseguita".mysql_error();
	} }else {
		foreach ($errori as $errore)
{
    echo $errore , '<br>';
}

			}
 
Prova con
PHP:
$query_registrazione = mysql_query("INSERT INTO utenti (username,password,email) VALUES ('$username','".md5('$password')."','$email'");
Altrimenti faglielo fare a php l'md5
PHP:
$password=md5($password);
$query_registrazione = mysql_query("INSERT INTO utenti (username,password,email) VALUES ('$username','$password','$email'");
 
Nemmeno in questo caso mi scrive i dati sul database, non penso di sbagliare la creazione della tabella..
 
In fase di sviluppo è necessario imparare a stampare eventuali errori mysql
PHP:
$query_registrazione = mysql_query("INSERT INTO utenti (username,password,email) VALUES ('$username','".md5('$password')."','$email'");  
if (!$query_registrazione) {
    echo "Errore query : " . mysql_error();
}
meglio ancora separare la query dalla sua esecuzione
 
Grazie a tutti comunque sono riuscito a risolvere cambiando un po' il codice grazie all'aiuto di un mio amico..
PHP:
$query = "INSERT INTO users (nome,telefono,username,email,password) VALUES ('$nome','$telefono','$username','$email','$password')";

$mysqli -> real_query($query);
if ($mysqli -> errno) {
	printf("Si sono verificati degli errori nell'eseguire la guery: <br/> %s", $mysqli -> error);
	exit();
} else {
	echo "Utente registrato coretatmente!";
}

Ora funziona alla perfezione ed ho un codice più pulito. Una volta che ho registrato questo utente come posso ri trattare l'username e la password in modo da dargli accesso a pagine protette?
Grazie ancora.
 
ciao
intanto ti conviene modificare la password
PHP:
<?php
//...
$passwor=sha1($password);//o direttamente dal $_POST
$query = "INSERT INTO users (nome,telefono,username,email,password) VALUES ('$nome','$telefono','$username','$email','$password')";
$mysqli -> real_query($query);
//....
?>
se parli del problema di loggarti, prova a cercare nel forum, il metodo è stato trattato più volte
 
Per la cronaca:
Prova con
PHP:
$query_registrazione = mysql_query("INSERT INTO utenti (username,password,email) VALUES ('$username','".md5('$password')."','$email'");
Altrimenti faglielo fare a php l'md5
PHP:
$password=md5($password);
$query_registrazione = mysql_query("INSERT INTO utenti (username,password,email) VALUES ('$username','$password','$email'");

Questi due modi sono identici.
 
Allora ricapitolando ora la registrazione funziona perfettamente ed è questo il codice:
PHP:
<?php

include_once 'connessione.php';
//secure variables
$nome = $mysqli -> real_escape_string($_REQUEST['nome']);
$telefono = $mysqli -> real_escape_string($_REQUEST['telefono']);
$username = $mysqli -> real_escape_string($_REQUEST['username']);
$email = $mysqli -> real_escape_string($_REQUEST['email']);
$password = md5($mysqli -> real_escape_string($_REQUEST['password']));

$query = "INSERT INTO users (nome,telefono,username,email,password) VALUES ('$nome','$telefono','$username','$email','$password')";

$mysqli -> real_query($query);
if ($mysqli -> errno) {
	printf("Si sono verificati degli errori nell'eseguire la guery: <br/> %s", $mysqli -> error);
	exit();
} else {
	echo "Utente registrato coretatmente!";
}
?>

Ora ho fatto un form sulla home con nome utente e password per far accedere gli utenti a pagine protette del sito
n.b. io ho creato il database Registrazioni e la tabella users.. cosa sbaglio?
PHP:
<?php
include_once 'connessione.php';

$user = trim($_POST['user']);
$pwd  = trim($_POST['pwd']);

// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
	$user    = mysql_real_escape_string($user);
	$pwd = mysql_real_escape_string($pwd);	

	// preparo ed invio la query
	$query = "SELECT id FROM users WHERE username = '$user' AND password = MD5('$pwd')";
	$result = mysql_query($query);
	// controllo l'esito
	if (!$result) {
		die("Errore nella query $query: " . mysql_error());
	}

	$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['user_id'] = $record['id'];
		$messaggio = urlencode('Login avvenuto con successo');
		header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
	}

?>

Mi dà questo errore:
Errore nella query SELECT id FROM users WHERE username = 'sss' AND password = MD5('aaa'): No database selected
Scusate l'ignoranza sto da poco iniziando a studiare php, grazie ancora.
 
Ultima modifica:
Certo che c'è..
PHP:
	public $db_name = 'registrazione';
in config.php e questo è connessione.php
PHP:
<?php
@include 'config.php';
$config = new Config;

$mysqli = new mysqli($config -> db_host, $config -> db_user, $config -> db_password, $config -> db_name);
if ($mysqli -> errno) {
	printf("Connection error: %s", $mysqli -> error);
	exit();
}
?>
e sono sicuro che ho fatto bene perchè se no non dovrebbe nemmeno scriverli sul database i dati..
 
Ultima modifica:
Stai mischiando le estensioni : mysql non è mysqli
 
Scusate un attimo.. nello script di registrazione dati cosa sbaglio? Se cambio mysqli non mi funziona più.. scusate per la confusione.
 
Nei due codici postati includi lo stesso file per la connessione
PHP:
include_once 'connessione.php';
nel primo però usi la classe mysqli()
PHP:
$mysqli -> real_query($query);
nel secondo l'estensione mysql
PHP:
$result = mysql_query($query);
c'è qualcosa che non va : o usi una o o l'altra
 
Nei due codici postati includi lo stesso file per la connessione
PHP:
include_once 'connessione.php';
nel primo però usi la classe mysqli()
PHP:
$mysqli -> real_query($query);
nel secondo l'estensione mysql
PHP:
$result = mysql_query($query);
c'è qualcosa che non va : o usi una o o l'altra

Grazie mille per l'intervento, correggerò e ti farò sapere se funziona ! :)
 
PHP:
<?php
include_once 'connessione.php';

$user = trim($_POST['user']);
$pwd  = trim($_POST['pwd']);

// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
	$user = $mysqli -> mysql_real_escape_string($user);
	$pwd = $mysqli ->mysql_real_escape_string($pwd);	
	

	// preparo ed invio la query
	$query = $mysqli->real_query("SELECT id FROM users WHERE username = '$user' AND password = MD5('$pwd')");

	// controllo l'esito
if ($mysqli -> errno) {
	printf("Nome utente o password errati: <br/> %s", $mysqli -> error);
	exit();
} else {
	session_start();
	$_SESSION['user_id'] = $record['id'];
	echo "Utente registrato coretatmente!";
}


?>

Ed ora cosa sbaglio?
 
PHP:
<?php
include_once 'connessione.php';

$user = trim($_POST['user']);
$pwd  = trim($_POST['pwd']);

// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
	$user = $mysqli -> mysql_real_escape_string($user);
	$pwd = $mysqli ->mysql_real_escape_string($pwd);	
	

	// preparo ed invio la query
	$query = $mysqli->real_query("SELECT id FROM users WHERE username = '$user' AND password = MD5('$pwd')");

	// controllo l'esito
if ($mysqli -> errno) {
	printf("Nome utente o password errati: <br/> %s", $mysqli -> error);
	exit();
} else {
	session_start();
	$_SESSION['user_id'] = $record['id'];
	echo "Utente registrato coretatmente!";
}


?>

Ed ora cosa sbaglio?
p.s. cambiare il titolo della discussione
 
ciao
intanto:
usa il require_once al posto dell'include
poi, secondo me ti conviene portare fuori l codifica
PHP:
<?php
//...
$pwd=md5($pwd);
//...
$query = $mysqli->real_query("SELECT id FROM users WHERE username = '$user' AND password = '$pwd'");
//....
?>
e nella real_query manca il link, da manuale php
bool mysqli_real_query ( mysqli $link , string $query )
io verificherei il numero e non se la querry da errore
PHP:
<?php
//....
$trovati = $mysqli -> mysqli_count;
//...
?>
se poi non estrai il record come fa a trovare $record['id'] ?
 
Scusami non voglio che me lo risolva qualcun altro il problema ma credetemi sono giorni che non riesco a capirci più nulla..
PHP:
<?php
require_once 'connessione.php';

$user = trim($_POST['user']);
$pwd  = trim($_POST['pwd']);

// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
	$user = $mysqli -> mysql_real_escape_string($user);
	$pwd = $mysqli ->mysql_real_escape_string($pwd);	
	$pwd= md5($pwd); 

// preparo ed invio la query
	$query = $mysqli->real_query("SELECT id FROM users WHERE username = '$user' AND password = '$pwd'");
	
// controllo l'esito
	$result = $mysqli->query($query);
if ($result -> errno) {
	printf("Nome utente o password errati: <br/> %s", $mysqli -> error);
	exit();
} else {
	session_start();
	$_SESSION['user_id'] = $record['id'];
	echo "Utente registrato coretatmente!";
}


?>

Non capisco cosa ci sia di sbagliato anche nell'ultima parte di codice, cioè il controllo..
 

Discussioni simili