Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Sessioni e Link <A href>

    Ciao a tutti, sono un nuovo utilizzatore del linguaggio PHP e dei siti dinamici e avevo intenzione di sviluppare un sito collegato ad un database per in grado di eseguire registrazione di utente, login e sessioni.
    Un pò alla volta sto settando il codice che trovo dai vari spunti su rete, però adesso mi sono imbattuto in un problema disu cui non ho trovato indicazioni, spero mi possiate essere di aiuto.

    Ho creato una sessione, dopo il login, che mi rimanda ad una pagina del sito con alcuni link (realizzati con il canonico come esempio) purtroppo mi sono accorto che questi o vengono completamente ingorati da alcuni browser come Explorer, oppure anche se attivi mi riconducono alla stessa pagina in cui mi trovo (Firefox si comporta così).

    Vi allego anche il codice php che sto utilizzando per quella pagina

    <?php
    $DB_host = "localhost";
    $DB_user = "root";
    $DB_password = "";
    $DB_name = "utenti";

    $link = mysql_connect($DB_host, $DB_user, $DB_password);
    if (!$link) {
    die ('Non riesco a connettermi: ' . mysql_error());
    }

    $db_selected = mysql_select_db($DB_name, $link);
    if (!$db_selected) {
    die ("Errore nella selezione del database: " . mysql_error());
    }

    if($_POST) {
    effettua_login();
    } else {
    mostra_form();
    }

    function mostra_form()
    {
    // mostro un eventuale messaggio
    if(isset($_GET['msg'])) {
    echo '<div id="benvenuto">'.htmlentities($_GET['msg']).'</div>';
    }

    }

    function effettua_login()
    {
    // recupero il nome e la password inseriti dall'utente
    $nome = trim($_POST['nome']);
    $password = trim($_POST['password']);
    // verifico se devo eliminare gli slash inseriti automaticamente da PHP
    if(get_magic_quotes_gpc()) {
    $nome = stripslashes($nome);
    $password = stripslashes($password);
    }

    // verifico la presenza dei campi obbligatori
    if(!$nome || !$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
    $nome = mysql_real_escape_string($nome);
    $password = mysql_real_escape_string($password);

    // preparo ed invio la query
    $query = "SELECT id FROM utenti WHERE nome = '$nome' AND pswd = '$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: errore.php");
    } else {
    session_start();
    $_SESSION['user_id'] = $record['id'];
    $messaggio = urlencode("Login avvenuto con successo - Benvenuto $nome");
    header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
    }
    }

    ?>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ricorda che session_start() deve essere in ogni pagina in cui usi la variabile $_SESSION e deve essere la prima istruzione in assoluto, il file deve cominciare con
    Codice PHP:
    <?php
    session_start
    ();
    Un consiglio, quando posti del codice qui sul forum mettilo all'interno dei tag [php] ed indenta il codice, risulterà molto più leggibile e più persone proveranno a risponderti.

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.