Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    ma il linguaggio do php4 è diverso da php5 ?

    ciao, ho dovuto spostare il mio sito da Aruba con php 4.4.9 su di un'altro provider che ha php 5.3.2 e ora il codice di login non funziona più... Non da messaggi d'errore, semplicemente quando mi loggo non mi rindirizza nella pagina admin, rimango in home e non succede niente.

    Praticamente questo codice con php 5 non funziona più, come è possibile?

    <?
    if ($username && $password){
    $aut = "SELECT id_login from a_login where username='$username' AND password='$password' ";
    $rs_aut = mysql_query($aut, $conn);
    $row_aut=mysql_fetch_array($rs_aut);


    if (($row_aut==0)==true){
    $msg_login="utente non riconosciuto";
    }
    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 = mysql_query($sql_ses, $conn);
    $row_ses=mysql_fetch_array($rs_ses);

    if (($row_ses==0)==true){
    unset ($_SESSION['idlogin']);
    }
    if (($row_aut==0)==true){
    $msg_login="utente non riconosciuto";
    }


    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");
    }


    }


    }
    ?>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    I dati che arrivano dai form vanno recuperati con $_POST o $_GET a sedconda di cosa è specificato nell'action.
    Le variabili globali non funzionano più perché sui server aggiornati la direttiva register_globals è impostata su off, quindi se hai un campo con name='username' lo devi recuperare con $_POST['username'] e non con $username.

    Inoltre sostituisci tutti i <? con <?php perché gli short tags non detto che siano supportati.

    Ultima cosa, converti le varie funzioni mysql_ con le equivalenti mysqli_ perché le prime sono deprecate e sui server più aggiornati non funzionano.
    Ultima modifica di Alhazred; 26-05-2014 a 14:15

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Grazie Alhazred per gli ottimi consigli, ora faccio queste modifiche e poi ti faccio sapere ;-)

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    niente, è come prima, ti allego il codice modificato:



    <?php
    if ($username && $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 (($row_aut==0)==true){
    $msg_login="utente non riconosciuto";
    }
    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 (($row_ses==0)==true){
    unset ($_SESSION['idlogin']);
    }
    if (($row_aut==0)==true){
    $msg_login="utente non riconosciuto";
    }


    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");
    }


    }


    }
    ?>

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    questo invece è il form di login:

    <table width="530" border="0" cellspacing="0" cellpadding="0">
    <form action="<?=$PHP_SELF?>" method="post" name="form_login">






    <?php if ($msg_login){?>
    <tr>
    <td width="530" colspan="9">
    <span class="testo_rosso_bold"><?=$msg_login?></span>
    </td>
    </tr>
    <?php }
    else {?>

    <?php }?>


    <?php
    $msgout = $_GET['msgout'];


    if ($msgout){?>
    <tr>
    <td width="530" colspan="9">
    <span class="testo_rosso_bold"><?=$msgout?></span>
    </td>
    </tr>
    <?php }
    else {?>

    <?php }?>






    <tr>
    <td width="115"> </td>
    <td width="20"></td>
    <td width="72">
    <a href="index.php" target="_top"><img src="images/pulsante_piccolo_home_72x22.gif" width="72" height="22" border="0" /></a>
    </td>
    <td width="20"></td>
    <td width="72"><input name="image" type="image" value="SubmitForm" src="images/pulsante_piccolo_entra_72x22.gif" width="72" height="22"></td>
    <td width="20"></td>
    <td width="96"><input type="text" name="username" value="<?=$_POST['username']?>" size="15" maxlength="30" height="10"></td>
    <td width="20"></td>
    <td width="95"><input type="password" name="password" value="<?=$_POST['password']?>" size="15" maxlength="30" height="10"></td>
    </tr>
    </form>
    </table>
    Ultima modifica di prinzart; 26-05-2014 a 15:03

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Anche qui

    if ($username && $password){

    devi usare $_POST['...']

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    siamo sulla buona strada, ora da cenni di vita, mi ha dato il messaggio "utente non riconosciuto" che corrisponde alla parte del codice

    if (($row_aut==0)){

    ma sul db quell'utente c'è, come fa a non riconoscerlo?
    Ultima modifica di prinzart; 26-05-2014 a 15:40

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    questo è il codice di accesso al db, anche qui ho provato a mettere mysqli ma mi dava errore

    <?php
    $conn = mysql_connect('server', 'username', 'password')
    or die("Errore connessione MySql: " . mysql_error());
    mysql_select_db('nomedb',$conn) or die("Errore connessione database: " . mysql_error());
    ?>

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    up

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Non sempre basta scrivere mysqli_ al posto mysql_ per alcune funzioni va bene, ma altre richiedono parametri diversi, affidati al manuale onlie di php per vedere di volta in volta come usare le funzioni.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.