[PHP] sviluppo sitoweb

jotes

Nuovo Utente
26 Dic 2016
27
0
1
17
ciao a tutti.
ho da poco cominciato lo sviluppo di un sito web
per svilupparlo sto usando php, html e sql
ho un problema con il log in degli utenti.
premetto che non ricordo mai qual è il tag per avvisare che sto per inserire del codice
ad ogni modo il codice della tabella utenti è questo:
CREATE TABLE members
(ID INT NOT NULL AUTO_INCREMENT,
Username varchar(64) NOT NULL,
Email varchar(255) NOT NULL,
Password varchar(32) NOT NULL,
PRIMARY KEY (ID));
e fin qui tutto ok
il codice per fare la registrazione invece è il seguente:
PHP:
<?php
// richiamo il file di configurazione con i dati del database
include "config.php";
// seleziono il database per poterci lavorare
mysql_select_db($db_name,$db);
// raccolgo i dati dal form
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
// inserisco le informazioni nel database
mysql_query("INSERT INTO ".$tabella." (Username, Email, Password) VALUES ('$username','$email', '$password')",$db) || die(mysql_error());
echo "registrazione avvenuta con successo";
// quindi i dati sono stati salvati nel database e l'utente è registrato
mysql_close($db);
?>
e anche qui non ci sono problemi. il problema sorge dal lgin. quando io inserisco i dati nel form pur essendo esatti me lo da come se fossero sbagliati. il codice dello script per il login è il seguente:
PHP:
<?php
include "config.php";
// Procedimento per connettersi al Database
mysql_select_db($db_name, $db) or die("can not select DB);");
// Nome utente e password inviate attraverso il form
$username = $_POST["username"];
$password = $_POST['password'];
$sql="SELECT * FROM $tabella WHERE Username='$username' and Password='$password'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1) {
// Register $myusername, $mypassword and redirect to file "login_success.php"
$_SESSION['username']= $username;
$_SESSION['password']= $password;
header("location:login_success.php");
}
else {
echo "Attenzione username o password errati";
header("location:index.php");
}
?>
non capisco quale sia il problema.
spero di ricevere una risposta. Scusatemi per il codice lungo ma volevo farmi capire in pieno. se volete visitare il sito che è in fase di sviluppo per provare personalmente il link è:
http://appaccessibili.altervista.org/
 
Ultima modifica di un moderatore:

xone

Utente Attivo
4 Apr 2014
179
13
18
Salento
www.seo-expert.it
Ciao, dopo l'apertura del tag <?php occorre startare la sessione:
PHP:
<?php
session_start();
?>
Comunque ricordati di filtrare sempre le variabili POST e GET tramite addslashes ed effettua sempre l'escape dei caratteri dannosi, inoltre per la password ti consiglio di criptarla in MD5 o SHA1
 

jotes

Nuovo Utente
26 Dic 2016
27
0
1
17
io ho messo le sessioni in tutti i file php adesso ma continuo a ricevere lo stesso errore.
in quanto all'escape e alla criptazione delle password preferisco prima poter fare una struttura di base poi inserirò le cose più complesse
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.035
146
63
PR
www.borgo-italia.it
ciao
che errore ti da?
poi quando posti del codice racchiudilo tra gli appositi bccode, quartultima iconcina barra formattazione del post "inserisci.. -> codice e poi selct cosa (generico, php, html)"
 

jotes

Nuovo Utente
26 Dic 2016
27
0
1
17
anche se ho messo session_start(); quando eseguo nonostante le credenziali siano esatte nel login non mi fa loggare.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.035
146
63
PR
www.borgo-italia.it
ciao
visto così non mi sembra di vedere errori di sintassi a oarte quel $tabella che non so da dove venga e dove sia valorizzato
comunque metti un var_dump per vedere se la query viene scritta come dovrebbe
PHP:
<?php
session_start();//questa deve essere alla prima riga
include "config.php";
// Procedimento per connettersi al Database
//mysql_select_db($db_name, $db) or die("can not select DB);");questa è gia in mysqli
// Nome utente e password inviate attraverso il form
$username = $_POST["username"];
$password = $_POST['password'];
$sql="SELECT * FROM $tabella WHERE Username='$username' and Password='$password'";
var_dump($sql);//poi lo togli
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1) {
    // Register $myusername, $mypassword and redirect to file "login_success.php"
    $_SESSION['username']= $username;
$_SESSION['password']= $password;
    header("location:login_success.php");
}else {
    echo "Attenzione username o password errati";
    header("location:index.php");
}
?>
e posta quello che riporta
 

jotes

Nuovo Utente
26 Dic 2016
27
0
1
17
ho messo il codice che mi hai postato qui e l'errore è:
Parse error: syntax error, unexpected '"config.php"' (T_CONSTANT_ENCAPSED_STRING) in /membri/appaccessibili/checklogin.php on line 3
 

jotes

Nuovo Utente
26 Dic 2016
27
0
1
17
PHP:
<?php
session_start(); //questa deve essere alla prima riga
include "config.php"; // Procedimento per connettersi al Database
//mysql_select_db($db_name, $db) or die("can not select DB);");questa è gia in mysqli
// Nome utente e password inviate attraverso il form
$username = $_POST["username"];
$password = $_POST['password'];
$sql="SELECT * FROM $tabella WHERE Username='$username' and Password='$password'";var_dump($sql);
//poi lo togli
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1) {
    // Register $myusername, $mypassword and redirect to file "login_success.php"
    $_SESSION['username']= $username;
$_SESSION['password']= $password;
header("location:login_success.php");
}else {
    echo "Attenzione username o password errati";
    header("location:index.php");
}
?>
 

jotes

Nuovo Utente
26 Dic 2016
27
0
1
17
ciao a tutti. per caso vedete un errore in questo codice?
io ho provato a leggerlo con lo screenreader ma non ho rilevato errori
intendo di sintassi non di funzioni deprecate
PHP:
<?php
session_start(); //questa deve essere alla prima riga
require("config.php"); // Procedimento per connettersi al Database
mysql_select_db($db_name, $db);
//Nome utente e password inviate attraverso il form
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$sql="SELECT * FROM $tabella WHERE Username='$username' and Password='$password'";var_dump($sql);
//poi lo togli
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1) {
    // Register $myusername, $mypassword and redirect to file "login_success.php"
    $_SESSION['username']= $username;
$_SESSION['password']= $password;
header("location:login_success.php");
}else {
    echo "Attenzione username o password errati";
    header("location:index.php");
}
misql_close($db);
?>
ho usato $_REQUEST perchè mi dava errore anche con post e get ma ora mi da comunque lo stesso errore
se volete controllare il sito è:
http://appaccessibili.altervista.org/
 

xone

Utente Attivo
4 Apr 2014
179
13
18
Salento
www.seo-expert.it
Il codice non ha errori, usando POST non dovresti ricevere errore, io credo che dovresti riguardare il database per verificare che i campi della tabella corrispondano. Facendo il var_dump la query viene eseguita correttamente?
 

jotes

Nuovo Utente
26 Dic 2016
27
0
1
17
PHP:
<?php
session_start();
$host="localhost"; // Hostname
$username="appaccessibili"; // Mysql username
$password=""; // Mysql password
$db_name="my_appaccessibili"; //Nome del Database
$tabella="members"; // Nome della Tabella
$db = mysql_connect($host,$username,$password);
?>
 

Bryan

Nuovo Utente
18 Giu 2017
9
0
1
43
Allora, premetto che non sono un esperto, ma io sto avendo problemi proprio con mysql.
Ovvero, in php tali codici (mysql_connect and mysql_query) sono deprecati , cioè non si utilizzano più.

Prova a mettere a mysqli_connect e mysqli_query, che corrispondono alla versione aggiornata.
 

jotes

Nuovo Utente
26 Dic 2016
27
0
1
17
ciao brian,
le funzioni deprecate le aggiornerò più avanti perchè ora sto avendo un errore di sintassi e non riesco a capire quale sia
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.035
146
63
PR
www.borgo-italia.it
ciao
a parte che conviene passare a mysqli, per la connessione usando le vecchie mysql, in quello che hai postato manca la connessione al database
PHP:
<?php
//connessione usando le vecchie funzioni mysql
$host = 'localhost';//nome host
$username = 'appaccessibili';//user name
$password = 'pinco_pallo';//password
$tabella="members"; // Nome della Tabella
$db_name = 'my_appaccessibili';// nome data base
//---connessione----------------------------------------------------
$connnessione = mysql_connect($host,$username,$password) or die (mysql_error());
$sel = mysql_select_db($db_name) or die (mysql_error());//MANCA QUESTA
?>
se invece usi, meglio, le funzioni mysqli
PHP:
<?php
//connessione usando le nuove funzioni mysqli
$host = 'localhost';//nome host
$username = 'appaccessibili';//user name
$password = 'pinco_pallo';//password
$tabella="members"; // Nome della Tabella
$db_name = 'my_appaccessibili';            // nome data base
//---connessione----------------------------------------------------
$connessione = mysqli_connect($host,$username,$password, $db) or die (mysql_error());
?>
la session_start() è meglio direttamente nella pagina in cui ti serve, comunque alla prima riga
 

jotes

Nuovo Utente
26 Dic 2016
27
0
1
17
grazie. ma dal check_login.php come richiamo la variabile che contiene mysql_select_db();
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.035
146
63
PR
www.borgo-italia.it
ciao
se usi le vecchie mysql non devi richiamare nulla
PHP:
<?php
require_once"config.php";
$res=mysql_query("SELECT ecc..");
//....
?>
se usi le mysqli nella query devi richiamare la variabile di connessione
PHP:
<?php
require_once"config.php";
$res=mysqli_query($connessione,"SELECT ecc..");
//....
?>
con le mysqli puoi usare anche la programmazione ad oggetti (ma da non mescolare la procedurale con quella ad oggetti)