aiuto su codice php

francio21

Nuovo Utente
22 Nov 2011
3
0
0
Salve a tutti..... sono nuovo del forum e non so se questa domanda è stata gia fatta....
Il mio problema è il seguente: la tabella del db è composta dei campi: id,user,password,dieta;
ho una pagina in php per il login (che funziona) e vorrei reindirizzare la pagina di avvenuta connessione in base al valore contenuto nella colonna dieta relativa all'user logato. Spero di essere stato chiaro...... vi posto il codice:

PHP:
<?
//Includo la connessione al database
$link = mysql_connect("localhost","root","root") or die ("Attenzione non trovo il database");
mysql_select_db("utenti") or die ("Attenzione non trovo il database");

//Queste sono le variabili che vengono inviate dal filmato flash
$user=$_POST['user'];
$pass=$_POST['pass'];

//connessione al database
if ($user && $pass){
//Creao la query
$query = "SELECT dieta FROM user WHERE username = '$user' AND userpassword = '$pass'";
$result = mysql_query( $query ) or die ("query errata");

$dieta = mysql_fetch_array($result);
//Controllo lo stato del login
$num = mysql_num_rows( $result );
if ($num == 1 AND $dieta == '2'){
	print "status=Grazie per aver effettuato il Login.&checklog=1";
	} elseif ($num == 1 AND $dieta == '3') {
		print "status=Grazie per aver effettuato il Login.&checklog=2";
		} else {
	print "status=Spiacenti i suoi dati non hanno avuto riscontro con il nostro database&checklog=3";
}
}
 
Ultima modifica di un moderatore:
Salve a tutti..... sono nuovo del forum e non so se questa domanda è stata gia fatta....
Il mio problema è il seguente: la tabella del db è composta dei campi: id,user,password,dieta;
ho una pagina in php per il login (che funziona) e vorrei reindirizzare la pagina di avvenuta connessione in base al valore contenuto nella colonna dieta relativa all'user logato. Spero di essere stato chiaro...... vi posto il codice:

Ciao, fossi in te farei un'unica query, al momento del login se l'utente è verificato estrapoli il campo "dieta" corrispondente e lo utilizzi per il tuo reindirizzamento (non ho capito bene in che modo perchè non l'hai spiegato)

PHP:
//Connessione database

$login = mysql_query("SELECT * FROM user WHERE user = '{$user}' and pass = '{$pass}'", $connessione) or die("errore");

if(mysql_num_rows($login) == 1)
{
$array = mysql_fetch_assoc($login);
$dieta = $array['dieta'];
echo"login effettuato con successo";

//e poi fai il reindirizzamento in base al valore di $dieta 

}
else
echo"user o pass non  trovati";

Spero di esserti stato d'aiuto
 
aiuto

ora spiego meglio: ho creato un'applicazione il flash che tramite php comunica con un database.
quindi in base al login e pass mi rimanda al fotogramma corrispondente al numero indicato nella colonna dieta(utilizzando il &checklog=...). Ho modificato il file in questo modo, ma non funziona, si blocca sulla schermata di accesso al database....

PHP:
<?
//Includo la connessione al database
$link = mysql_connect("localhost","root","root") or die ("Attenzione non trovo il database");
mysql_select_db("utenti") or die ("Attenzione non trovo il database");

//Queste sono le variabili che vengono inviate dal filmato flash
$user=$_POST['user'];
$pass=$_POST['pass'];

//connessione al database
if ($user && $pass){
//Creao la query
$login = mysql_query("SELECT * FROM user WHERE user = '{$user}' and pass = '{$pass}'", $connessione) or die("errore");

if(mysql_num_rows($login) == 1)
{
$array = mysql_fetch_assoc($login);
$dieta = $array['dieta'];
if ($dieta == 2){
	print "status=Grazie per aver effettuato il Login.&checklog=1";
	} elseif ($dieta == 3) {
		print "status=Grazie per aver effettuato il Login.&checklog=2";
		} 
	}
}else {
	print "status=Spiacenti i suoi dati non hanno avuto riscontro con il nostro database&checklog=3";
}
?>

puoi dirmi dove sto sbagliando?
grazie
 
Ultima modifica di un moderatore:
Cosa vuol dire si blocca sulla schermata di accesso al database?? qual è l'errore?

E poi non sono molto sicuro di print "status=Grazie per aver effettuato il Login.&checklog=1"; sei sicuro che questa parte sia giusta? in questo modo tutto il contenuto tra gli apici non diventa una stringa? Non capisco cosa sia checklog..

Comunque scrivi l'errore..

PS.
Per connetterti al db fai cosi':
PHP:
//connessione al server 
$conn = mysql_connect("localhost", "root", ""); //di default e in locale i dati sono questi ma se li hai cambiati devi settarli in modo giusto
if (!$conn)
  die("errore di connessione  " . mysql_error ());
//selezione del database
$sel = mysql_select_db("Nome_database", $conn);
if (!$sel)
  die("errore di connessione al database  " . mysql_error());
E al momento della query dopo la parte in mysql scrivi $conn non $connessione
prova cosi' e vedi che errore ti da
 
Ultima modifica:
ciao
suggerisco, come al solito, di dividere la query e di mettere var_dump
PHP:
<?php
//...
$query_str="SELECT * FROM user WHERE user = '$user' and pass = '$pass'";
var_dump($query_str);
$login = mysql_query($query_str) or die("errore");
var_dump($login);
//...
?>
il primo var_dump ti restituisce la composizione della stringa e così puoi vedere se viene scritta come dovrebbe (vorresti)
il secondo FALSE o RESOURCE se la query va a buon fine
da quei due var_dump puoi risalire all'errore.
volendo per capire meglio puoi metteri anche quando leggi i $_POST
PHP:
<?php
//...
$user=$_POST['user'];
var_dump($_POST['user']);
$pass=$_POST['pass'];
var_dump($_POST['pass']);
//...
?>

p.s.
NON usare gli shorttag <? sono deprecati, usa <?php
poi quando posti il codice racchiodilo tra gli appositi tag (li trovi nella parte di formattazione)

dimenticavo:posta il risultato dei var_dump
 
Ultima modifica:
help

nella schermata dall'applicazione una volta che clicco sul tasto invia mi esce la scritta "accesso al database....."
questo codice senza la funzione di controllo sul campo dieta, funziona alla perfezione.....il ploblema è che ho bisogno di visualizzare fotogrammi diversi (checklog=) a seconda del contenuto dalla colonna dieta.
Faccio un esempio:

User:pippo
Password:pluto
dieta:3

in base alla tabella vedo che il dato in dieta e 3, quindi se inserisco pippo e pluto come username e password mi restituisce la pagina relativa alla dieta 3 (checklog=2).

checklog è una variabile che si trova nel codice action Script che varia a seconda del risultato

ho fatto la modifica proposta da borgo italia e mi da questo errore e provo a eseguirlo il IE

Codice:
Notice: Undefined index: user in C:\xampp\htdocs\progetto\controlla_login3.php on line 5

Notice: Undefined index: user in C:\xampp\htdocs\progetto\controlla_login3.php on line 6
NULL 
Notice: Undefined index: pass in C:\xampp\htdocs\progetto\controlla_login3.php on line 7

Notice: Undefined index: pass in C:\xampp\htdocs\progetto\controlla_login3.php on line 8
NULL

che corrispondono a questi:

PHP:
//Queste sono le variabili che vengono inviate dal filmato flash
$user=$_POST['user'];
var_dump($_POST['user']);
$pass=$_POST['pass'];
var_dump($_POST['pass']);
 
Ultima modifica di un moderatore:
PHP:
if(isset($_POST['user']))
{
$user=$_POST['user'];
}

e così per tutti
 
ciao
eliox ha ragioene, però se ha provato a trasmettere dal form in flash e quello è il risultato vuol dire o che non tramett ben o che non riceve.
sono da verificare i nomi dei campi di input con quelli che hai nei $_post (che non so come sono fatti in flash)
 

Discussioni simili