Un saluto a tutta la community,
mi dareste una mano a sistemare questo codice per effettuare il porting da mysql a mysqli.
Questo il file della connessione che funziona bene:
questo il codice che invece dovrei trasformare da mysql a mysqli
Sono arrivato a questo punto, ma ottengo sempre un errore nella query;
Dopo una serie di verifiche, il problema sembrerebbe risiedere nella funzione mysqli_real_escape_string
mi dareste una mano, devo migrare circa 50 script da mysql a mysqli
Grazie
mi dareste una mano a sistemare questo codice per effettuare il porting da mysql a mysqli.
Questo il file della connessione che funziona bene:
PHP:
<?php
// Apriamo la connessione verso il database mysql
$conndb = mysqli_connect('localhost', 'utente', 'password', 'database');
// Controlliamo l'esito della connessione
if (!$conndb) {
die("Errore di connessione (" . mysqli_connect_errno() . ") " . mysqli_connect_error());
exit();
}
// Chiudiamo la connessione
mysqli_close($conndb);
?>
questo il codice che invece dovrei trasformare da mysql a mysqli
PHP:
<?php
include('conngo2.php'); // Includes Login Script
if($_POST) {
effettua_login();
} else {
mostra_form();
}
function mostra_form()
{
// mostro un eventuale messaggio
if(isset($_GET['msg'])) {
echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
}
?>
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Porting</title>
<link rel="icon" href="favicon.ico">
<link rel="stylesheet" href="css/style.css">
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src="js/index.js"></script>
</head>
<body>
<div class="wrapper">
<div class="container">
<h1>Porting</h1>
<form id="form_login" name = "form_login" "class="form" method="post" action="">
<input type="text" placeholder="Username" name="username">
<input type="password" placeholder="Password" name="password">
<button type="submit" id="login-button">Accedi</button>
</form>
</div>
<ul class="bg-bubbles">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</body>
</html>
<?
}
function effettua_login()
{
// recupero il nome e la password inseriti dall'utente
$username = trim($_POST['username']);
$password = trim($_POST['password']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc()) {
$username = stripslashes($username);
$password = stripslashes($password);
}
// verifico la presenza dei campi obbligatori
if(!$username || !$password) {
$messaggio = urlencode("Non hai inserito il nome o la password");
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
exit;
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
// preparo ed invio la query
$query = "SELECT * FROM utenti WHERE username = '$username' AND password = MD5('$password')";
$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['username'] = $record['username'];
$messaggio = urlencode('Login avvenuto con successo');
header("location: home.php");
}
}
?>
Sono arrivato a questo punto, ma ottengo sempre un errore nella query;
PHP:
<?php
include('conngo2.php'); // Includes Login Script
if($_POST) {
effettua_login();
} else {
mostra_form();
}
function mostra_form()
{
// mostro un eventuale messaggio
if(isset($_GET['msg'])) {
echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
}
?>
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title></title>
<link rel="icon" href="favicon.ico">
<link rel="stylesheet" href="css/style.css">
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src="js/index.js"></script>
</head>
<body>
<div class="wrapper">
<div class="container">
<h1></h1>
<form id="form_login" name = "form_login" "class="form" method="post" action="">
<input type="text" placeholder="Username" name="username">
<input type="password" placeholder="Password" name="password">
<button type="submit" id="login-button">Accedi</button>
</form>
</div>
<ul class="bg-bubbles">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</body>
</html>
<?
}
function effettua_login()
{
// recupero il nome e la password inseriti dall'utente
$username = trim($_POST['username']);
$password = trim($_POST['password']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc()) {
$username = stripslashes($username);
$password = stripslashes($password);
}
// verifico la presenza dei campi obbligatori
if(!$username || !$password) {
$messaggio = urlencode("Non hai inserito il nome o la password");
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
exit;
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$username = mysqli_real_escape_string($conndb, $username);
$password = mysqli_real_escape_string($conndb, $password);
// preparo ed invio la query
$query = "SELECT * FROM utenti WHERE username = '$username' AND password = MD5('$password')";
$result = mysqli_query($conndb,$query);
// print_r($conndb,$result);
// controllo l'esito
if (!$result) {
die("Query: " .$query. " <br>Errore: " . mysql_error($conndb));
}
$record = mysqli_fetch_array($conndb,$result);
mysqli_free_result($result);
if(!$record) {
$messaggio = urlencode('Nome utente o password errati');
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
} else {
session_start();
$_SESSION['username'] = $record['username'];
$messaggio = urlencode('Login avvenuto con successo');
header("location: home.php");
}
}
?>
Dopo una serie di verifiche, il problema sembrerebbe risiedere nella funzione mysqli_real_escape_string
Codice:
// recupero il nome e la password inseriti dall'utente
$username = trim($_POST['username']);
$password = trim($_POST['password']);
//OK print_r ($username);
//OK print_r ($password);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc()) {
$username = stripslashes($username);
$password = stripslashes($password);
}
//OK print_r ($username);
//OK print_r ($password);
// verifico la presenza dei campi obbligatori
if(!$username || !$password) {
$messaggio = urlencode("Non hai inserito il nome o la password");
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
exit;
}
//OK print_r ($username);
//OK print_r ($password);
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$username = mysqli_real_escape_string($conndb,$username);
$password = mysqli_real_escape_string($conndb,$password);
[b]// KO VARIABILE NON VALORIZZATA[/b] print_r ($username);
[b]// KO VARIABILE NON VALORIZZATA[/b] print_r ($password);
mi dareste una mano, devo migrare circa 50 script da mysql a mysqli
Grazie