Visualizzazione risultati 1 fino 8 di 8

Discussione: [PHP/MySQL] Login con sessione non riconosciuto!

  1. #1
    Guest

    Post [PHP/MySQL] Login con sessione non riconosciuto!

    Ciao a tutti, credo che il titolo dica tutto (o quasi)...allora io sto facendo un blog privato ed ho fatto un sistema login basatosi su 2 variabili e sulle sessioni ($user e $pass)...ora qst'ultimo non funziona come dovrebbe...ossia la sessione viene registrata...ma non viene riconosciuta! :(
    E di conseguenza torna alla pagina di login perchè se la sessione non è registrata spunta la pagina di login (senza niente solo con il form)..ok?
    Ecco il codice:
    http://www.sim.altervista.org/index.txt
    Arriva fino a qst punto (dopo il login ok):
    Codice PHP:
    if($username == $user && $password == $pass) {

    echo
    "<h2>Login OK!</h2>";

    $_SESSION["username"] = $user;
    $_SESSION["password"] = $pass;
    session_register("username");
    session_register("password");

    if(
    session_is_registered("username") && session_is_registered("password")) {

    echo
    "<h3>...e Sessioni Registrate!</h3>";

    $userm = $_SESSION["username"];
    $passm = $_SESSION["password"];

    echo
    "<b>Username</b>: ".$userm."<br />";
    if(
    $passm == $pass) {
    echo
    "<b>Password</b>: ****<br />";
    }

    echo
    "<br /><br /><p align=\"center\"><a href=\"index.php\">Vai al blog</a>...</p>";
    La sessione dovrebbe essere registrata, anche perchè io sto facendo un controllo dopo che è stata registrata..ma quando clikko su "vai al blog"...qst mi riporta alla pagina di login...come se la sessione non fosse stata registrata...perchè?
    Grazie 1000...ciao Davide! ^^
    PS. Ho messo il link perchè mi diceva:
    1. Il testo che hai inserito è troppo lungo (11734 caratteri). Accorcialo a 10000 caratteri.
    X vedere il codice andate su Destro (Mouse-Click) -> Mostra codice HTML...Grazie!

  2. #2
    Ospite Guest

    Predefinito

    http://it.php.net/manual/it/function...n-register.php

    2 box attenzione....

    e poi non ci va session_start() ?

    scusa la mia ignoranza nelle sessioni...

  3. #3
    Guest

    Predefinito

    Ok..risolto! :)
    Grazie 1000..ma ora come faccio a cancellare le sessioni (x fare il logout)???..
    Ciao Davide! ^^

  4. #4
    Guest

    Predefinito

    E facciamo una ricerca qualche volta!!!
    http://it.php.net/manual/it/ref.session.php

    EDIT A parte il fatto che ti bastava leggere attentamente la pagina linkata da matt93...
    Ultima modifica di sitemap : 22-06-2008 alle ore 17.25.46

  5. #5
    Guest

    Predefinito

    Ok...Grazie!
    Ora ho un'altro problema...quando la news si aggiunge dovrebbe essere inviata un'email...ma qst non avviene!
    Codice PHP:
    $destinatari = "".$nikname." <".$email1."" . ", " ; // notare la virgola
    $destinatari .= "".$nikname." <".$email2.">";
    $oggetto = "".$nikname.": Nuova news...";
    $messaggio = "<div align=\"center\"><h4>News Inserita!</h4></div> <b>News Id</b>: #$idnews[0]<br /><b>Titolo</b>: $titolo<br /><b>Data</b>: $data<br /><b>Categoria</b>: $catshow[0]<br /><b>Umore</b>: $umore<hr />$testo";
    $intestazioni = "MIME-Version: 1.0\r\n";
    $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $intestazioni .= "From: ".$nikname." <".$urlsito.">\r\n";

    if(
    mail($destinatari, $oggetto, $messaggio, $intestazioni)) {

    echo
    "<hr /><h4>Email Inviata!</h4>";

    } else {

    echo
    "<hr /><h4>Email NON Inviata!</h4>";

    }
    Grazie 1000...ciao Davide! ^^

  6. #6
    Guest

    Predefinito

    Ciao...

    E' da poco che ho iniziato a programmare php, quindi potrei sbagliarmi, ma penso che qui ci siano un po' di cose da rivedere ;)
    Allora, tanto per iniziare:

    Codice PHP:
    $_SESSION["username"] = $user;
    $_SESSION["password"] = $pass;
    session_register("username");
    session_register("password");
    Non ci va assolutamente session_register()!
    $_SESSION è incompatibile con questo comando, che tra l'altro ti sconsiglio fortemente di usare in ogni caso... In realtà stai facendo la stessa cosa due volte ;)
    Non devi registrare nessuna sessione! La sessione si registra nel momento stesso in cui esegui session_start(), quello che ti serve è memorizzare al suo interno il nick dell'utente come cercavi di fare...
    Nelle nuove versioni di php il modo corretto per farlo è proprio usare lo speciale array $_SESSION... Una volta che hai fatto $_SESSION["username"] = $user per controllare se è stato registrato l'utente nella sessione non devi fare altro che:

    Codice PHP:
    if(isset($_SESSION("username")) && isset($_SESSION("password"))) {
    //codice
    }
    Come poi avrai notato il modo corretto per terminare una sessione è eseguire il comando session_destroy(), ad ogni modo ti consiglio di usarlo in coppia con $_SESSION = array() per evitare problemi, quindi:

    Codice PHP:
    $_SESSION = array();
    session_destroy();
    Per quanto concernee l'invio di mail... in:

    Codice PHP:
    $destinatari = "".$nikname." <".$email1."" . ", " ; // notare la virgola
    $destinatari .= "".$nikname." <".$email2.">";
    ti sei dimenticato un ">"! Non te ne sei accorto anche perché hai usato uno stile di scrittura poco leggibile... ti consiglio di usare:

    Codice PHP:
    $destinatari = "\"$nikname1\" <$email1>, " ; // notare la virgola
    $destinatari .= "\"$nikname2\" <$email2>";
    Ho aggiunto "" attorno al nick perché ho paura ci possano essere problemi nel caso questo contenga spazi,
    ed è sempre meglio stare sul sicuro, ahah
    stai attento cmq! Questa sintassi non funziona su server Windows...
    In quest'ultimo caso è necessario usare solo l'indirizzo e-mail senza specificare il nick...

    Per l'intestazione... hai usato un rientro a capo stile Windows "\r\n" ^^;;
    Ritengo sia opportuno utilizzare un singolo "\n" tra le righe, e concludere con un "\n\n" come codice di terminazione...

    Codice PHP:
    $intestazioni = "MIME-Version: 1.0\n";
    $intestazioni .= "Content-type: text/html; charset=iso-8859-1\n";
    $intestazioni .= "From: $nikname <$urlsito>\n\n";
    Tra l'altro... hai configurato il server smpt per l'invio della mail??
    Non sono sicuro di come sia su altervista sotto questo profilo :S

    Spero riuscirai a far funzionare il tutto!
    Buona fortuna,

    Jacopo
    Ultima modifica di jhack : 23-06-2008 alle ore 19.27.50

  7. #7
    Ospite Guest

    Predefinito

    Citazione Originalmente inviato da jhack Visualizza messaggio
    Codice PHP:
    $_SESSION = array();
    al posto di questo si potrebbe tranquillamente usare session_unset()

  8. #8
    Guest

    Predefinito

    Ok...Grazie 1000..ma ora ho un'altro problema...
    Devo modificare una news x esempio...e ho fatto una pagina (index.php?a=modifica) dove ci sn tutte le news e dp c'è il collegamento x modificarle (index.php?a=modifica&id=$)..
    Ma quando lo metto mi spunta pagina bianca..anche senza andare in index.php?a=modifica..
    in tutto!..
    xkè?
    Codice PHP:
    case "modifica":

    $newsq = mysql_query("SELECT id,titolo,data FROM news");

    echo
    "<div class=\"entry\">
    <h1><a href=\"index.php?a=modifica\">Modifica News</a></h1>
    <div class=\"entrybody\">
    "
    ;

    while(
    $news = mysql_fetch_array($newsq)) {

    echo
    "<p><a href=\"index.php?a=modifica&id=$news[id]\">$news[titolo]</a> &middot; $news[data]</p>";

    }

    echo
    "</div></div>";

    if(isset(
    $_GET['id'])) {

    $idnews = $_GET['id'];

    if(
    $idnews == "") {

    echo
    "<b>Errore</b>: News non trovata.<br />";

    } else {

    $newsq = mysql_query("SELECT * FROM news WHERE id = '$idnews'");
    $news = mysql_fetch_array($newsq);

    if(
    $idnews == $news["id"]) {

    echo
    "<div class=\"entry\">
    <h1><a href=\"index.php?a=modifica&id=
    $news[id]\">Modifica News - $news[titolo]</a></h1>
    <div class=\"entrybody\">
    "
    ;

    $categoriaq = mysql_query("SELECT * FROM categoria WHERE id = '$news[categoria]'");
    $categoria = mysql_fetch_array($categoriaq);

    echo
    "<p><b>News Id</b>: #$news[id]<br />
    <b>Titolo</b>:
    $news[titolo]<br />
    <b>Data</b>:
    $news[data]<br />
    <b>Categoria</b>:
    $categoria[nome]<br />
    <b>Umore</b>:
    $news[umore]<hr />
    $testo</p>";

    echo
    "</div></div>";

    echo
    "<div class=\"entry\">
    <h1><a href=\"index.php?a=modifica&id=
    $news[id]\">Modifica News - Form di Modifica</a></h1>
    <div class=\"entrybody\">
    "
    ;

    echo
    "<p><b>Titolo</b>: <input type=\"text\" name=\"titolo\" value=\"$news[titolo]\" /></p>
    <p><b>Testo</b>:<br />
    <p>Testo: <a href=\"javascript: aggiungiTag('[b]', '[/b]')\" title=\"[b][/b]\"><b>Grassetto</b></a> - <a href=\"javascript: aggiungiTag('[i]', '[/i]')\" title=\"[i][/i]\"><i>Corsivo</i></a> - <a href=\"javascript: aggiungiTag('[u]', '[/u]')\" title=\"[u][/u]\"><u>Sottolineato</u></a><br />
    <textarea rows=\"11\" cols=\"41\" name=\"testo\" value=\"
    $news[testo]\"></textarea></p>
    <input type=\"submit\" name=\"aggiungi\" value=\"= MODIFICA NEWS =\" /> <input type=\"reset\" name=\"reset\" value=\"= RESET CAMPI =\" />
    </form>"
    ;

    echo
    "</div></div>";

    if(isset(
    $_POST['aggiungi'])) {


    $titolo

    $titolo
    = htmlspecialchars("".$_POST['titolo']."", ENT_QUOTES);
    $testo = htmlspecialchars("".$_POST['testo']."", ENT_QUOTES);

    $testo = str_replace('>','&gt;',$testo);
    $testo = str_replace('<','&lt;',$testo);
    // GRASSETTO
    $testo = str_replace('[b]','<b>',$testo);
    $testo = str_replace('[/b]','</b>',$testo);
    // CORSIVO
    $testo = str_replace('[i]','<i>',$testo);
    $testo = str_replace('[/i]','</i>',$testo);
    // SOTTOLINEATO
    $testo = str_replace('[u]','<u>',$testo);
    $testo = str_replace('[/u]','</u>',$testo);

    $testo = nl2br($testo); // Sostituisce "a capo" con <br /> nel textarea...

    $inserisci = mysql_query("UPDATE news (titolo,testo) VALUES ('$titolo','$testo')");

    if(
    $inserisci) {


    echo
    "<div align=\"center\">News Modificata!</div>";

    } else {

    echo
    "<div align=\"center\">News non Modificata!</div>";

    }

    }

    } else {

    echo
    "<div class=\"entry\">
    <h1><a href=\"index.php?a=modifica&id=
    $news[id]\">Modifica News - Form di Modifica</a></h1>
    <div class=\"entrybody\">
    "
    ;

    echo
    "<p><b>Titolo</b>: <input type=\"text\" name=\"titolo\" value=\"$news[titolo]\" /></p>
    <p><b>Testo</b>:<br />
    <p>Testo: <a href=\"javascript: aggiungiTag('[b]', '[/b]')\" title=\"[b][/b]\"><b>Grassetto</b></a> - <a href=\"javascript: aggiungiTag('[i]', '[/i]')\" title=\"[i][/i]\"><i>Corsivo</i></a> - <a href=\"javascript: aggiungiTag('[u]', '[/u]')\" title=\"[u][/u]\"><u>Sottolineato</u></a><br />
    <textarea rows=\"11\" cols=\"41\" name=\"testo\" value=\"
    $news[testo]\"></textarea></p>
    <input type=\"submit\" name=\"aggiungi\" value=\"= MODIFICA NEWS =\" /> <input type=\"reset\" name=\"reset\" value=\"= RESET CAMPI =\" />
    </form>"
    ;

    echo
    "</div></div>";


    } else {

    echo
    "<b>Errore</b>: News inesistente.<br />";

    }

    }

    } else {

    header("Location: index.php?a=modifica");

    }

    break;
    X ora è tutto commentato (/* */) visto che non funziona...
    Ciao e Grazie! ^^

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •