Ciao a tutti,
premetto che non sono super esperto di PHP.
Ho un codice che ha sempre funzionato bene, nel cambiare server (con l'aggiornamento alla versione PHP 5.5.12) mi dà problemi.
In sostanza è uno script per il check login, prende user e pass inserite dall'utente, fa una select sul db mysql tramite odbc e se questo restituisce un valore allora l'utente entra. Sul db la pass è criptata sha1.
Il problema è che adesso si collega al db ma quando verifico che il numero di righe del risultato siano diverse da 1 tale check non funziona bene......
Ho provato a usare "mysqli" perchè mi diceva che era superato come codice ma nulla da fare.....non so se c'entra.
Qualcuno ha dei suggerimenti? GRAZIE MILLE.
Codice PHP:
<?php
ob_start();
if(!isset($_SESSION)) {session_start();}
$log=mysqli_connect("localhost","xxxxxx","xxxxxx","sito")or die("Connessione non riuscita con il server MySql");
// se esistono i cookie verifico che l'user e la pas salvate siano ancora esistenti nel db
if(isset($_COOKIE['nome']) && isset($_COOKIE['nome2'])){
$nick = $_COOKIE['nome'];
$pass = $_COOKIE['nome2'];
}
else{
// i cookie non esistono quindi verifico i dati del form di login
if (!isset($_POST['nick']) || !isset($_POST['pass'])) {
header("location:main_login.php"); die;
}
if (empty($_POST['nick']) || empty($_POST['pass'])) {
header("location:main_login.php"); die;
}
// username and password inviati dal form
$nick=strip_tags($_POST['nick']); //rimuove eventuali tag html
$pass=strip_tags($_POST['pass']);
// protezione MySQL injection
$nick = stripslashes($nick); //rimuove le backslash
$pass = stripslashes($pass);
$nick = mysql_real_escape_string($nick);
$pass = mysql_real_escape_string($pass);
$pass = sha1($pass);
}
// cerco le credenziali nel db su mysql
$sql="SELECT * FROM users WHERE nickname='$nick' and password='$pass'";
$result=mysqli_query($log, $sql);
# SE NON TROVA TALE OCCORRENZA EFFETTUA REDIRECT AL LOGIN
if(mysql_num_rows($result) != 1)
{
// cancello eventuali cookie che esistevano ma non sono più validi
if(isset($_COOKIE['nome']) && isset($_COOKIE['nome2'])){
setcookie ("nome", "", time() - 3600);
setcookie ("nome2", "", time() - 3600); }
mysql_close();
header("location:main_login.php");
die;}
# CREDENZIALI OK - NEL CASO IN CUI L'OCCORRENZA ESISTE CREA LA SESSIONE
$_SESSION["autorizzato"] = 1;
$_SESSION['nick'] = $nick;
if(isset($_POST['ricorda']) && $_POST['ricorda']=="R"){
setcookie("nome", $nick, time()+60*60*24*365*2); // 2 anni
setcookie("nome2", $pass, time()+60*60*24*365*2);
}
// Redirect alla pagina riservata (con check ogni pag)
header("location:index.php");