Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Sessioni php

  1. #1

    Sessioni php

    ciao a tutti.. ho provato qualche guida online ma non so perche non mi riesce questa cosa...

    allora il sito e strutturato cosi...

    index.php dove si puo fare il login
    _login.php la form di index invia i dati a questo file...
    reg.php contiene la pagina di registrazione
    _reg.php il form di reg.php invia qui i dati che li manda al db con tutti i controlli necessari

    ora mi chiedo:
    la sessione si apre sempre all' inizio di una pagina dove ci interessa che funzioni ok.. allora in
    index php e _login php apro la sessione all inizio e tra i tag php

    session_start();

    poi continuo in _login.php con: in modo da prendere al click della form la user e la pass
    $user = $_POST['username'];
    $psw = $_POST['password'];

    e salvo i dati in index.php con
    $_SESSION['username'] = $user;
    $_SESSION['password'] = $psw;

    li salvo in index perche il _login.php mi rimanda in caso di avvenuto login ad index.php e sempre in index metto
    if (isset($_SESSION['username']))
    echo "logout"


    poi se provo a fare login entro con successo ma mi esce
    Notice: Undefined index: username in C:\Program Files\EasyPHP-12.0\www\sito\index.php on line 6

    Notice: Undefined index: password in C:\Program Files\EasyPHP-12.0\www\sito\index.php on line 7

    potreste dirmi cosa c'e' che non va?? perche e sbagliato?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Tu questo
    Codice PHP:
    $user $_POST['username'];
    $psw $_POST['password'];

    $_SESSION['username'] = $user;
    $_SESSION['password'] = $psw
    Che per inciso potresti anche fare semplicemente
    Codice PHP:
    $_SESSION['username'] = $_POST['username'];
    $_SESSION['password'] = $_POST['password'];
    //anche se a livello di sicurezza non fare alcun controllo su ciò che arriva dalle form è un suicidio 
    lo metti in quale file?
    index o quello dove punta la form di login.
    La risposta giusta perché tutto funzioni deve essere "nel file a cui punta la action della form"
    perché in caso contrario non hai più a disposizione i dati dell'array $_POST ed è per questo che ti da l'errore.
    E mi pare proprio che tu abbia invece scelto index.php

  3. #3
    come faccio a fare un controllo sul form?

    quindi tu dici
    $_SESSION['username'] = $_POST['username'];
    $_SESSION['password'] = $_POST['password'];
    alla _login.php??

    quindi tradotto intendi:
    <?php
    session_start();

    $_SESSION['username'] = $_POST['username'];
    $_SESSION['password'] = $_POST['password'];


    questo e il resto del codice

    include("connaldb.php");

    $user = $_REQUEST["username"];
    $psw = $_REQUEST["password"];


    $sql = "select * from user where username='" . $user . "' and password='" . $psw . "'";

    $result = mysql_query($sql);

    if (mysql_num_rows($result)>0)
    {
    header("location: index.php");
    }
    else
    {
    header("location: index.php?errlog=1");
    }

    ?>

    devo dire che ora funziona solo una cosa.. come posso dare con i css uno stile a questo link??

    if (isset($_SESSION['username']))
    echo "logout"

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Dunque, dato che lo sai che il form invia dati tramite post puoi cambiare questo
    $user = $_REQUEST["username"];
    $psw = $_REQUEST["password"];

    in questo
    $user = $_POST["username"];
    $psw = $_POST["password"];

    evita di usare $_REQUEST
    e comunque non hai bisogno di $user e $pass, puoi continuare ad usare $_POST['username'] e $_POST['password'] ovunque all'interno dello stesso file, tranquillo, $_POST non si consuma.

    quindi la query la puoi scrivere

    Codice PHP:
    $sql "select * from user where username='" $_POST['username'] . "' and password='" $_POST['password'] . "'"
    questa è fatta senza controlli sull'input (ciò che arriva dal form) e come ti ho detto è un suicidio.
    La puoi migliorare in questo modo
    Codice PHP:
    $sql "select * from user where username='" mysql_real_escape_string($_POST['username']) . "' and password='" mysql_real_escape_string($_POST['password']) . "'"
    Per quanto riguarda il link, aggiungici un attributo class (io lo chiamo logout, tu puoi dargli il nome che vuoi)
    echo "logout"

    e quindi nel css puoi riferirtici con
    a.logout { qui le regole che vuoi }

  5. #5
    scusa e basterebbe questo per rendere il sito sicuro????

    $sql = "select * from user where username='" . mysql_real_escape_string($_POST['username']) . "' and password='" . mysql_real_escape_string($_POST['password']) . "'";

    perdonami ma cosi mi fai saltare i caratteri di escape.. ma come potrebbero creare danni utilizzandoli??

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ovviamente non rendi il sito sicuro, ma ti mette al riparo da tentativi di SQL Injection, qui un esempio di come funziona tale pratica.
    Per mettere al sicuro un sito ci vuole anche molto altro, ma non se ne può parlare in un thread di un forum, la materia è troppo vasta, dovresti studiarti qualcosa in merito.

    Di che caratteri di escape dovresti aver bisogno per username e password?

  7. #7
    beh penso di nessuno.....
    grazie per il tuo link ma sono a totale digiuno di inglese..

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.