creazione login multiplo

Ciao a tutti,

mi sto adoperando per la creazione di un login che in base alla categoria scelta mi rimandi su una pagina di benvenuto piuttosto che su un'altra. La pagina di benenuto dovrebbe risultare cosi: nome_categoria/benvenuto.php

<form name="cat" method="post" action="<?php echo "RISERVATA.php?categoria=$categoria"; ?>">     

<select class="input_text"  name="categoria" size="1"> 

<option value="" selected>Seleziona la categoria</option> 

<option value="PICCOLE AZIENDE">Piccole aziende</option> 

<option value="GRANDI AZIENDE">Grandi Aziende</option>

<option value="PRIVATI">Privati</option> 

</select>

</form>

                     

<?php $categoria=$_POST['categoria']; ?>      

                     

<form name="theForma" onSubmit="return form_validatora(this)" method="post" action="<?php echo "$categoria/benvenuto.php"; ?>">

<img src="images/spazio.gif" height="5" alt=""><br>

&nbsp;Username: <input type="text" name="txt_username" size="15"><br><br>

&nbsp;Password: &nbsp;<input type="password" name="txt_password" size="15">

<input type="submit" value="login">

</form>

Il problema è che questo codice proprio non funziona...

c'è un'altra metodologia per poter raggiungere il mio obiettivo???

 ???

grazie

 :bye:

inviato 10 anni fa
stellina
X 0 X

ciao stellina :D

secondo me potresti fare un form unico dove metti i 3 campi di username, password e categoria.

quando si fa il submit controlli quale categoria ha selezionato l'utente e lo mandi a una pagina specifica.

per esempio, usando una sola pagina index.php:

<form action="index.php?mode=login" method="post">

<p>

<select class="input_text"  name="categoria" size="1">

<option value="" selected>Seleziona la categoria</option>

<option value="PICCOLE _AZIENDE">Piccole aziende</option>

 <option value="GRANDI_AZIENDE">Grandi Aziende</option>

<option value="PRIVATI">Privati</option>

</select>

</p>

<p>Username: <input type="text" name="txt_username" size="15"></p>

<p>Password:  <input type="password" name="txt_password" size="15"></p>

<p><input type="submit" name="bottone_entra" value="Entra"></p>

</form>

<?php

if ($_GET['mode']=='login')

          {

            $username=$_POST['txt_username'];

            $password=$_POST['password'];

            $categoria= $_POST['categoria'];

            // controllo della correttezza dei dati inseriti in username e password

            // (altrimenti rimandi l'utente a index.php, e quindi al form)

            // ...

           // se i dati inseriti sono giusti guardi la categoria che ha scelto:

           switch ($categoria)

              {

                  case 'PICCOLE_AZIENDE':

                            {

                            header('Location: pagina1.php');

                            break;

                            }

                 case 'GRANDI_AZIENDE':

                            {

                            header('Location: pagina2.php');

                            break;

                            }

                 case 'PRIVATI':

                            {

                            header('Location: pagina3.php');

                            break;

                            }

            default:

                           {

                            header('Location:index.php');

                           break;

                            }

           }

?>

non so se questo codice sia proprio quello piu' adatto in questo caso, ma nei miei programmi funziona!

:lamo:

risposto 10 anni fa
ro679
modificato 10 anni fa
X 0 X

Certo che non funziona, hai usato il PHP per impostare l'action del form con delle informazioni legate al form stesso, non ancora inviato! Devi fare tutto il javascript.

Se il codice che controlla username è password è comune alle tre categorie allora ti conviene fare come propone ro679, altrimenti con un javascript imposti l'action del form in sunzione della categoria scelta.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

La soluzione che mi ha proposto ro679 dovrebbe fare quello che mi serve, l'ho testata ma non mi funziona l'errore riportato è relativo agli header:

Cannot modify header information

cosa posso fare??

 :tichedoff:

risposto 10 anni fa
stellina
X 0 X

ciao

il problema e' nell'uso della funzione header (se vuoi andare a vedere:

http://it2.php.net/manual/it/function.header.php )

per risolvere puoi inserire il codice html del form in una condizione:

<?

if (!isset($_GET['mode']) || $_GET['mode']=='' || $_GET['mode']<>'login')

{

// codice html

}

elseif ($_GET['mode']=='login'])

{

// il codice php

}

cosi' quando l'utente fa il POST il programma va direttamente al blocco di codice che lo interessa e non "vede" il codice html.

infatti perche' "header()" funzioni bisogna che non ci sia nessun output html o php (per esempio un "echo") prima della funzione.

 :bye:

risposto 10 anni fa
ro679
X 0 X

Ciao,

ho aggiustato seguendo le indicazioni di ro679 il ridirezione alla pagina in base alla categoria scelta funziona ma la pagina di benvenuto mostra sempre "errore di login".

Eppure i dati del form sono corretti.

Come mai???

Grazie!

risposto 10 anni fa
stellina
X 0 X

riporta il codice del login

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Scusa, ma perché invece di complicarti così la vita, non inserisci un campo nascosto dove mettere la categoria, in funzione della scelta utente sulla select?

Sulla base della sicurezza, è uguale, tanto se uno volesse modificare la tua scelta può tranquillamente agire o sulla get o sul campo hidden, quindi ritengo che da questo punto non modificherebbe nulla, invece risolverebbe un sacco di problemi a te.

risposto 10 anni fa
Marco Grazia
X 0 X

il mio login funziona cosi:

la pagina benvenuto.php

richiama verify.php che verifica se i dati immessi nel form sono esatti ...

Ho inserito nel codice la stampa di username e password per vedere che cosa succede.

FILE VERIFY.php

<?php 

session_start();//Avvio o continuo la sessione 

if(!IsSet($_SESSION['logged']))  //Controllo che la sessione sia attiva

   $username = $_POST['txt_username'];

   $password = $_POST['txt_password'];

   

   echo "USER $username";

   echo "PASS $password";

....

a questo punto se utilizzo il form normale mi stampa username e password correttamente mentre con il form modificato username e password sono "vuote".

 :o

risposto 10 anni fa
stellina
X 0 X

Quindi benvenuto.php è la pagina che contiene il form? Ho letto tutto ma non riesco proprio a capire il "filo" logico.

Se il form di login non è in benvenuto.php allora non puoi usare verify.php con il metodo post (o aggiungi un altro form).

risposto 10 anni fa
LonelyWolf
X 0 X

Butto un esempio così mi dici se ho capito:

index.php:

form con user,pass e categoria action->login.php

login.php:

riceve con post user,pass, categoria se corretti:

imposta le variabili di sessione logged, user e pass(se ti serve averle successivamente, lo so che non è il top) e redireziona con header a categoria/benvenuto.php

altrimenti rimanda a index.php

benvenuto.php:

verifica le variabili di sessione e mostra benvenuto $user ecc ecc se logged=true altrimenti ributta a /index.php

Il filo scorre così?

risposto 10 anni fa
LonelyWolf
X 0 X

Questo è il filo che ho seguito:

index.php:

form con categoria,user,pass . In base alla categoria scelta si viene rimandati alla pagina a categoria/benvenuto.php

categoria/benvenuto.php prima di tutto chiama verify.php e verifica che i dati inseriti siano corretti:

se dati corretti ->  categoria/benvenuto.php stampa "benvenuto ecc."

se dati errati -> categoria/benvenuto.php stampa "errore login non sei autenticato"

 :-\

risposto 10 anni fa
stellina
X 0 X

poiché tra l'invio del form ed il controllo dei dati c'è un passaggio interposto allora i dati di POST si perdono. Potresti ovviare salvandoli nella sessione.

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Esattamente come dice gianni, nel tuo "filo" verify non riceve i dati con post quindi ti dà l'errore, puoi seguire il mio consiglio precedente (e quindi verificare prima i dati) e poi salvarli in una sessione per utilizzarli nelle pagine successive, oppure verificarli successivamente.

risposto 10 anni fa
LonelyWolf
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda