- Home
- Categorie
- Coding e Sistemistica
- PHP
- Query select compatibile con php5
-
Query select compatibile con php5
ciao questa query da quando il sito è passato ad un server con php5 non funziona più, mi sapete dire che parte del codice devo cambiare per adattarlo all'ultima versione di php?
<?php
if ($_POST['username'] && $_POST['password']){$aut = "SELECT id_login from a_login where username='".$_POST['username']."' AND password='".$_POST['password']."' ";
$rs_aut = mysqli_query($aut, $conn);
$row_aut=mysqli_fetch_array($rs_aut);if (mysql_num_rows($aut) == 0){
$msg_login="utente non riconosciuto1";
}
if ($row_aut['attivo']=='no'){
$msg_login="non hai confermato la registrazione";
}
else {
$_SESSION['idlogin']=$row_aut['id_login'];
}if ($_SESSION['idlogin']) {
$sql_ses = "SELECT * from a_login where id_login = '".$_SESSION['idlogin']."' ";
$rs_ses = mysqli_query($sql_ses, $conn);
$row_ses=mysqli_fetch_array($rs_ses);if (mysql_num_rows($sql_ses) == 0){
unset ($_SESSION['idlogin']);
}
if (mysql_num_rows($aut) == 0){
$msg_login="utente non riconosciuto2";
}if ($row_ses['attivo']=='no'){
$msg_login="non hai confermato la registrazione";
}elseif ($row_ses['admin']=='no'){
header("Location: utente/utente_main.php");
}elseif ($row_ses['admin']=='si'){
header("Location: admin/admin_main.php");
}}
}
?>
-
COsa intendi per "non funziona più"? Non ha più output?
Intanto, una cosa che ti consiglio di cambiare: in ogni if($variabile) metti if(isset($variabile)), per esempio, all'inizio:
if (isset($_POST['username']) && isset($_POST['password']))
-
ciao meis,
succede che arriva fino a qui:if (mysql_num_rows($aut) == 0){
$msg_login="utente non riconosciuto1";
}e poi si ferma.
Praticamente a video mi compare il messaggio "utente non riconosciuto1" quando invece nel db risulta essere un utente registratomysql_num_rows($aut) mi dovrebbe trovare 1 record e invece mi da 0, ma nel db esiste un utente con quella username e password
-
la cosa che mi fa impazzire da questa mattina è che il sito funzionava benissimo quando stava su un server con php 4.3.2 ma da quando è passato su di un server con php 5.2.2 molte cose non funzionano più
-
L'argomento dovrebbe essere $rs_aut
-
modificato codice ma si ferma sempre allo stesso punto:
<?php
if (isset($_POST['username']) && isset($_POST['password'])){$aut = "SELECT * from a_login where username='".$_POST['username']."' AND password='".$_POST['password']."' "; $rs_aut = mysqli_query($aut, $conn); $row_aut=mysqli_fetch_array($rs_aut); if (mysql_num_rows($rs_aut) == 0){ $msg_login="utente non riconosciuto1"; } elseif (isset($row_aut['attivo'])=="no"){
$msg_login="non hai confermato la registrazione";
}
else {
$_SESSION['idlogin']=$row_aut['id_login'];
}if ($_SESSION['idlogin']) {
$sql_ses = "SELECT * from a_login where id_login = '".$_SESSION['idlogin']."' ";
$rs_ses = mysqli_query($sql_ses, $conn);
$row_ses=mysqli_fetch_array($rs_ses);if (mysql_num_rows($rs_ses) == 0){ unset ($_SESSION['idlogin']); }
if (mysql_num_rows($rs_aut) == 0){
$msg_login="utente non riconosciuto2";
}if (isset($row_ses['attivo'])=="no"){
$msg_login="non hai confermato la registrazione";
}elseif (isset($row_ses['admin'])=="no"){
header("Location: utente/utente_main.php");
}elseif (isset($row_ses['admin'])=="si"){
header("Location: admin/admin_main.php");
}}
}
?>
-
Non da messaggi d'errore, semplicemente quando mi loggo non mi rindirizza nella pagina admin, rimango in home e non succede niente.
mi ha dato il messaggio "utente non riconosciuto" che corrisponde alla parte del codice
(mysql_num_rows($rs_aut) == 0){
$msg_login="utente non riconosciuto1";
}ma sul db quell'utente c'è, come fa a non riconoscerlo?
-
se vi può essere utile per aiutarmi vi do queste altre informazioni:
SEVER CON PHP 4.4.9 DOVE IL SITO FUNZIONAVA CORRETTAMENTE
vuvuvu.livingadamis.com/phpinfo.phpSEVER CON PHP 5.3.2 DOVE IL SITO NON FUNZIONA BENE
vuvuvu.adamis.it/phpinfo.php
-
Quello che mi fa strano non è tanto che il codice non ti funzioni con il passaggio a PHP5, quanto il fatto che ti funzionasse con PHP4.
Usi delle funzioni predefinite di PHP5 come mysqli_XXXX che non esistevano nella versione precedente.
mysqli_query, a differenza di mysql_query, come argomenti vuole prima l'identificativo della connessione e poi la stringa.
Quindi
$rs_aut = mysqli_query($aut, $conn);deve diventare
$rs_aut = mysqli_query($conn, $aut);
altrimenti ti ritornerà sempre il valore FALSE. A cascata tutti gli altri valori saranno FALSE.
Ciao.