[PHP] sviluppo sitoweb

  • Creatore Discussione Creatore Discussione jotes
  • Data di inizio Data di inizio

jotes

Nuovo Utente
26 Dic 2016
27
0
1
22
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:
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
 
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
 
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)"
 
anche se ho messo session_start(); quando eseguo nonostante le credenziali siano esatte nel login non mi fa loggare.
 
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
 
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
 
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");
}
?>
 
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/
 
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?
 
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);
?>
 
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.
 
ciao brian,
le funzioni deprecate le aggiornerò più avanti perchè ora sto avendo un errore di sintassi e non riesco a capire quale sia
 
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
 
grazie. ma dal check_login.php come richiamo la variabile che contiene mysql_select_db();
 
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)
 

Discussioni simili