Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema PHP 5.3.6

  1. #1

    Problema PHP 5.3.6

    Buongiorno, oggi vi proporrò una strana nonché curiosa cosa che mi accade con PHP 5, credetemi non so più cosa fare.. Premetto, sto lavorando su un sito nel Hosting Altervista il problema però è nel LOGIN e nel riconoscimento dell’utente nell’area Privata con PHP 5 poichè con PHP 4 funziona.

    Dunque iniziamo, io ho la pagina LOGIN (login.php) seguente:

    Codice PHP:
    <form action="main.php" method="post">
        <
    table cellpadding="3" cellspacing="3" width="200">
          <
    tr onmouseover="this.className = 'hlt';" onmouseout="this.className = 'hlu';" class="hlu"
            <
    td><div align="center">Nome:</div></td>
            <
    td><div align="left"
                <
    input type="text" name="pg" id="pg" />
              </
    div></td>
          </
    tr>
          <
    tr onmouseover="this.className = 'hlt';" onmouseout="this.className = 'hlu';" class="hlu"
            <
    td><div align="center">Pass:</div></td>
            <
    td><div align="left"
                <
    input type="password" name="pass" id="pass" max="32" /> 

    Poi la pagina MAIN (main.php):

    Codice PHP:
    require_once("percorso mio per recupera i dati di connessione al DB"); //connessione al db

    $giorno=date('j');
    $mese=date('M');
    if(
    $mese=="Jan"){$meseOK="Gennaio";}
    if(
    $mese=="Feb"){$meseOK="Febbraio";}
    if(
    $mese=="Mar"){$meseOK="Marzo";}
    if(
    $mese=="Apr"){$meseOK="Aprile";}
    if(
    $mese=="May"){$meseOK="Maggio";}
    if(
    $mese=="Jun"){$meseOK="Giugno";}
    if(
    $mese=="Jul"){$meseOK="Luglio";}
    if(
    $mese=="Aug"){$meseOK="Agosto";}
    if(
    $mese=="Sep"){$meseOK="Settembre";}
    if(
    $mese=="Oct"){$meseOK="Ottobre";}
    if(
    $mese=="Nov"){$meseOK="Novembre";}
    if(
    $mese=="Dec"){$meseOK="Dicembre";}
    $ora=date('H:i');
    $anno=date('Y');
    $data="$giorno".$meseOK".$anno".$ora";
    $data2="$giorno".$meseOK".$anno".$ora";//Calcolo la data testuale

    $control1=mysql_query("SELECT * FROM user WHERE nome='".$pg."' AND password='".$pass."'");//selezione utente da db

    $pgnum=mysql_num_rows($control1);
    $control=mysql_fetch_array($control1);
    $ip=$_SERVER["REMOTE_ADDR"]; //recupero l'ip

    if($pgnum!="1"){ //controllo se il pg esiste
    header("Location: php_errori/utente_inesistente.php");
    }else{
    if(
    $control[ban]=="1"){
    header("Location: php_errori/utente_bannato.php");
    }else{
    if (
    $control[connesso]=="1"){
    header("Location: php_errori/utente_collegato.php");    
    }else{
    if((
    $ip==$control[ip]) OR ($control[connesso]=="0")){
        
    session_start();
    session_register("nome della sessione");

    $_SESSION['nome'] = $control[nome];

    $user mysql_real_escape_string($_POST['pg']);
    $user htmlentities ($_POST['pg']);
    $pass mysql_real_escape_string($_POST['pass']);
    $pass htmlentities ($_POST['pass']);

    $user=$_SESSION['nome'];
    $now=time();//recupero time

    $insert=mysql_query("INSERT INTO accessi (nome,data,data2,ip,stato) VALUES ('".$user."','".$data."',NOW(),'".$ip."','entrato')");//inserisci accesso

    $update=mysql_query("UPDATE user SET time='".$now."', luogo='Mappa', luogo_a='Mappa', ullacc='".$data2."', connesso='1', ip='".$ip."', ultimaexp = '".$now."' WHERE nome='".$user."'");//aggiorno valori

    header('Location: main2.php'true);//mando la prima pagina
    }}}}
    ?> 
    Mentre le pagine interne dopo il LOGIN hanno tutte questo codice posto in alto prima di ogni cosa:

    Codice PHP:
    session_start();

    require_once(
    'includiamo il collegamento con il DB');
    require_once(
    'include/controllo_sessione.php');

    if((
    session_is_registered(nome della sessione))&&($_SESSION['nome'])){

    $row=mysql_fetch_array(mysql_query("SELECT * FROM user WHERE nome='".$user."'")); 

    Dov'è he sbaglio? Perchè in PHP 5 non mi riconosce l'utente e mi dice UTENTE INESISTENZE.

  2. #2
    Il problema potrebbe essere l'utilizzo di funzioni deprecate. session_register() e session_is_registered() sono deprecate.
    QUI trovi un elenco delle funzioni deprecate in PHP 5.3.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Ciao,
    guarda che
    session_register()
    e
    session_is_register()
    sono è DEPRECATED a partire da PHP 5.3.0
    ...
    Usa
    $_SESSION['pippo']
    e
    isset($_SESSION['pippo'])

    probabilmente il problema è proprio quello!
    ciao
    p.h


    http://php.net/manual/en/function.se...registered.php

  4. #4
    Dunque, vediamo se ho capito abbiate pazienza…

    Nella pagina MAIN (main.php) devo rimuovere:
    Codice PHP:
    session_register("nome della sessione"); 
    Però lasciare il session_start(); per avviare la sessione, mentre nelle are di accesso dopo il LOGIN dovrei fare così:

    Codice PHP:
    session_start(); 

    require_once(
    'includiamo il collegamento con il DB'); 
    require_once(
    'include/controllo_sessione.php'); 

    if(
    $_SESSION['nome']){ 

    $row=mysql_fetch_array(mysql_query("SELECT * FROM user WHERE nome='".$user."'")); 
    ?

  5. #5
    a parte che non capisco cosa sia qeul "nome della sessione" che c'è in
    session_register("nome della sessione");
    perché non compare da nessuan'altra parte del codice....

    comunque il concetto è che
    quando vuoi salvare un variabile di sessione usi
    Codice PHP:
    $_SESSION['dato1']='pippo'

    e quando vuoi testare se 'dato1' è nella sessione usi
    Codice PHP:
    if (isset($_SESSION['dato1'])) 

    ......

    e ovviamente metti session_start() all'inizio per rendere disponibile la sessione...

  6. #6
    L’ho messo per ora qui sul FORUM, giusto per non dare il nome esatto, tutto qui.

    Dunque ho fatto così:

    MAIN (main.php)
    Codice PHP:
    <?php
    require_once("includo qui la pagina di connessione"); //connessione al db
    $giorno=date('j');
    $mese=date('M');
    if(
    $mese=="Jan"){$meseOK="Gennaio";}
    if(
    $mese=="Feb"){$meseOK="Febbraio";}
    if(
    $mese=="Mar"){$meseOK="Marzo";}
    if(
    $mese=="Apr"){$meseOK="Aprile";}
    if(
    $mese=="May"){$meseOK="Maggio";}
    if(
    $mese=="Jun"){$meseOK="Giugno";}
    if(
    $mese=="Jul"){$meseOK="Luglio";}
    if(
    $mese=="Aug"){$meseOK="Agosto";}
    if(
    $mese=="Sep"){$meseOK="Settembre";}
    if(
    $mese=="Oct"){$meseOK="Ottobre";}
    if(
    $mese=="Nov"){$meseOK="Novembre";}
    if(
    $mese=="Dec"){$meseOK="Dicembre";}
    $ora=date('H:i');
    $anno=date('Y');
    $data="$giorno".$meseOK".$anno".$ora";
    $data2="$giorno".$meseOK".$anno".$ora";//Calcolo la data testuale

    $pg=$_POST['pg'];
    $pass=$_POST['pass'];

    $control1=mysql_query("SELECT * FROM user WHERE nome='".$pg."' AND password='".$pass."'");//selezione utente da db



    $pgnum=mysql_num_rows($control1);

    $control=mysql_fetch_array($control1);

    $ip=$_SERVER["REMOTE_ADDR"]; //recupero l'ip

    if($pgnum!='1'){ //controllo se il pg esiste
    header("Location: php_errori/utente_inesistente.php");
    }else{
    if(
    $control[ban]=='1'){
    header("Location: php_errori/utente_bannato.php");
    }else{
    if (
    $control[connesso]=='1'){
    header("Location: php_errori/utente_collegato.php");    
    }else{
    if((
    $ip==$control['ip']) OR ($control['connesso']=='0')){
        
    session_start();

    $_SESSION['nome'] = $control['nome'];

    $user mysql_real_escape_string($_POST['pg']);

    $user htmlentities ($_POST['pg']);

    $pass mysql_real_escape_string($_POST['pass']);

    $pass htmlentities ($_POST['pass']);


    $user=$_SESSION['nome'];

    $now=time();//recupero time

    $insert=mysql_query("INSERT INTO accessi (nome,data,data2,ip,stato) VALUES ('".$user."','".$data."',NOW(),'".$ip."','entrato')");//inserisci accesso

    $update=mysql_query("UPDATE user SET time='".$now."',  luogo='Mappa', luogo_a='Mappa', ullacc='".$data2."', connesso='1', ip='".$ip."', ultimaexp = '".$now."' WHERE nome='".$user."'");//aggiorno valori

    header('Location: main2.php'true);//mando la prima pagina
    }}}}
    ?>
    Funziona con PHP unico problema che ora mi da, nella variabile $update c’è la voce Mappa ora dopo che faccio il LOGIN perché in quel campo nel DB mi resta vuoto e luogo_a invece viene riempito da Mappa cos’è come ho detto di fare?

  7. #7

  8. #8
    Dunque ho provveduto a fare le modifiche ma sembra proprio che non và, vi posto il codice aggiornato sperando di trovare una soluzione:

    MAIN (main.php)
    codice:
    <?php
    require_once("config.php"); //connessione al db
    
    $giorno=date('j');
    $mese=date('M');
    if($mese=="Jan"){$meseOK="Gennaio";}
    if($mese=="Feb"){$meseOK="Febbraio";}
    if($mese=="Mar"){$meseOK="Marzo";}
    if($mese=="Apr"){$meseOK="Aprile";}
    if($mese=="May"){$meseOK="Maggio";}
    if($mese=="Jun"){$meseOK="Giugno";}
    if($mese=="Jul"){$meseOK="Luglio";}
    if($mese=="Aug"){$meseOK="Agosto";}
    if($mese=="Sep"){$meseOK="Settembre";}
    if($mese=="Oct"){$meseOK="Ottobre";}
    if($mese=="Nov"){$meseOK="Novembre";}
    if($mese=="Dec"){$meseOK="Dicembre";}
    $ora=date('H:i');
    $anno=date('Y');
    $data="$giorno"." $meseOK"." $anno"." $ora";
    $data2="$giorno"." $meseOK"." $anno"." $ora";//Calcolo la data testuale
    
    $pg=$_POST['pg'];
    $pass=$_POST['pass'];
    
    $control1=mysql_query("SELECT * FROM user WHERE nome='".$pg."' AND password='".$pass."'");//selezione utente da db
    
    
    
    $pgnum=mysql_num_rows($control1);
    
    $control=mysql_fetch_assoc($control1);
    
    $ip=$_SERVER["REMOTE_ADDR"]; //recupero l'ip
    
    if($pgnum!='1'){ //controllo se il pg esiste
    header("Location: php_errori/utente_inesistente.php");
    exit();
    }
    if($control[ban]=='1'){
    header("Location: php_errori/utente_bannato.php");
    exit();
    }
    if($control[connesso]=='1'){
    header("Location: php_errori/utente_collegato.php");
    exit();	
    }
    if(($ip==$control['ip']) OR ($control['connesso']=='0')){
    	
    session_start();
    
    $_SESSION['nome'] = $control['nome'];
    
    $user = mysql_real_escape_string($_POST['pg']);
    
    $user = htmlentities ($_POST['pg']);
    
    $pass = mysql_real_escape_string($_POST['pass']);
    
    $pass = htmlentities ($_POST['pass']);
    
    
    $user=$_SESSION['nome'];
    
    $now=time();//recupero time
    
    $insert=mysql_query("INSERT INTO accessi (nome,data,data2,ip,stato) VALUES ('".$user."','".$data."',NOW(),'".$ip."','entrato')");//inserisci accesso
    
    $update=mysql_query("UPDATE user SET time='".$now."',  luogo='Mappa', luogo_a='Mappa', ullacc='".$data2."', connesso='1', ip='".$ip."', ultimaexp = '".$now."' WHERE nome='".$user."'");//aggiorno valori
    
    header('Location: main2.php', true);//mando la prima pagina
    }
    ?>
    Codice inserito in alto in ogni pagine:
    codice:
    <?php
    session_start(); 
    
    require_once('include/include.php'); 
    require_once('include/controllo_sessione.php'); 
    
    if(isset($_SESSION['nome']) && !empty($_SESSION['nome'])){
    
    $row=mysql_fetch_array(mysql_query("SELECT * FROM user WHERE nome='".$_SESSION['nome']."'"));
    
    ….?>
    Come prima, mi fa accedere però non riconosce il Luogo e in alcune pagine sembra proprio che non riconosce nemmeno l'utente.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.