Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: login

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2022
    Messaggi
    17

    login

    Buona sera a tutti sto svolgendo un esercizio in cui devo creare due pag php: index.php e check.php.
    nell'index devo fare questo:
    Creare nella pagina index.php un form per il login che richiede nomeutente e password, se il nome utente è uguale ad "admin" e lapassword è uguale a “prova”, crea una variabile di sessione"abilitato" a cui da il valore 1;
    il codice bozza che ho scritto è il seguente:
    <?php
    session_start();
    if('uname'=='admin'&& 'password'=='prova'){
    $_SESSION['abilitato'] = 1;
    }
    ?>
    <!DOCTYPE html>
    <!--
    Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
    Click nbfs://nbhost/SystemFileSystem/Templates/Project/PHP/PHPProject.php to edit this template
    -->
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Login</title>
    </head>
    <body>

    <label>Nome utente</label>


    <input type="text" name="uname" placeholder="Nome utente"><br>


    <label>Password</label>


    <input type="password" name="password" placeholder="Password"><br>


    <button type="submit">Accedi</button>


    </form>
    </body>
    </html>

    come faccio per far partire l'if una volta premuto il bottone accedi?

    per quanto rigiarda il check invece devo fare questo:
    il file check.php contiene solo il codice per controllare la variabile disessione, se abilitato stampa sessione abilitata, altrimenti rimanda alla paginaindex.php
    questo il codice che ho scritto:
    <?php
    session_start();
    if( isset($_SESSION['abilitato']))
    {
    echo "sessione abilitata";
    }
    else
    {
    print "clicca <a href='index.php'>qui</a>"; //l'ho scritto bene?
    }
    ?>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Non apri il form da nessuna parte, hai solo il tag di chiusura </form>, dunque di fatto sulla pagina non c'è nessun form su cui effettuare il submit.

    Quando posti del codice mettilo tra i tag
    [ php ]
    e
    [ /php ]
    senza gli spazi prima e dopo le quadre (che io ho dovuto mettere, altrimenti i tag non sarebbero visibili), così si capisce meglio.

    Poi ce ne sono anche altri di problemi, tipo
    if('uname'=='admin'&& 'password'=='prova'){
    dove fai il confronto tra stringhe che non saranno mai uguali e non tra una variabile ricevuta dal form e una stringa.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2022
    Messaggi
    17
    Codice PHP:
    <?php
    session_start
    ();
    $utente="admin";
    $password="prova";
    if(
    $utente === "admin" && $password "prova"){
     
    $_SESSION['abilitato'] = 1;  
    }
    ?>
    <!DOCTYPE html>
    <!--
    Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
    Click nbfs://nbhost/SystemFileSystem/Templates/Project/PHP/PHPProject.php to edit this template
    -->
    <html>   
       <head>        
         <meta charset="UTF-8">       
           <title>Login</title>    
    </head>    
      <body>     
        <form method="post" action="check.php">     
          <label>Nome utente</label>
              <input type="text" name="uname" placeholder="Nome utente"><br>
          <label>Password</label>
              <input type="password" name="password" placeholder="Password"><br> 
            <button type="submit">Accedi</button>
         </form>   
     </body>
    </html>
    Ultima modifica di Maggi; 02-01-2023 a 00:29

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2022
    Messaggi
    17
    sto andando per step scusate ma sono una principiante.
    Ultima modifica di Maggi; 02-01-2023 a 00:04

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Stai andando per step studiando oppure più per tentativi?
    Nel codice che scrivi ci sono molte cose che hanno poco senso.

    Inizializzi queste due variabili
    $uname=null;
    $password=null;

    e poi provi ad eseguire questa istruzione

    if($uname === "admin" && $password = "prova")
    ma lo hai specificato tu che sono entrambe pari a null un attimo prima, come faranno ad essere una uguale ad 'admin' e l'alta uguale a 'prova'? Sono null.

    Lì dovresti intercettare i valori provenienti dal form, ma così non è (vedi come si recuperano i dati provenienti da un form).

    Nella stessa riga fai un confronto con === che potrebbe anche andare, ma dovresti comunque usare ==, per la password invece non fai un confronto, ma una assegnazione.

    Secondo me dovresti spendere più tempo sulla teoria, perché in questo modo impari poco, o comunque imparerai impiegandoci un sacco di tempo in più.
    Prendilo come un consiglio, andare per tentativi non è una buona strategia per imparare, ti blocchi di continuo su cose semplici, devi aspettare che qualcuno ti risponda e ti spazientisci.
    Ultima modifica di Alhazred; 02-01-2023 a 00:29

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2022
    Messaggi
    17
    grazie per il consiglio ho visto un video su come recuperare dati da una form.
    https://www.youtube.com/watch?v=wV5lysXfqFs
    da quello che ho capito per recuperare una form devo utilizzare $_GET o $_POST ma prima devo fare una verifica sul bottone "accedi" se questo viene premuto o meno. è corretto?
    Codice PHP:
    session_start();
    if(isset(
    $_POST["accedi"])){
       
    $utente$_POST["utente"];
       
    $password$_POST["password"];    
       if(
    $utente == "admin" && $password == "prova"){ 
           
    $_SESSION['abilitato'] = 1;      
       }

    in realtà sto seguendo un video corso che ho pagato ma non mi ci sto trovando molto bene perché è un pò confusionario e faccio davvero molta fatica così
    Ultima modifica di Maggi; 02-01-2023 a 01:13

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2022
    Messaggi
    17
    grazie per il consiglio ho visto un video su come recuperare dati da una form.
    https://www.youtube.com/watch?v=wV5lysXfqFs
    da quello che ho capito per recuperare una form devo utilizzare $_GET o $_POST ma prima devo fare una verifica se sul bottone "accedi" se questo viene premuto o meno. è corretto?
    in realtà sto seguendo un video corso che ho pagato ma non mi ci sto trovando molto bene perché è un pò confusionario e faccio davvero molta fatica così

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    L'uso di $_POST oppure $_GET è legato a ciò che metti come method del form, devono essere in accordo, se metti method="post" devi usare $_POST e se metti method="get" devi usare $_GET.
    Per i form comunque nella stragrande maggioranza dei casi si usa post, specialmente se si tratta di inviare dati sensibili come una password.

    Detto questo, nell'array $_POST ti ritrovi i campi input del form a cui hai assegnato un attributo "name", ad esempio tu non avrai mai un $_POST["accedi"] perché nel form non hai nessun input con tale nome. Il tuo Accedi è semplicemente il testo che appare sul bottone submit.

    Non è necessario verificare che sia settato proprio il pulsante submit quando verifichi se il form è stato inviato, puoi anche verificare che siano settati uno o più campi del form stesso, in tal caso dovresti verificare l'esistenza di un campo obbligatorio.

    Nel tuo codice vedo che come action del form metti "check.php" quello lì è il file a cui verranno inviati i dati del form, è questo il comportamento che ti serve? Oppure devi inviare i dati alla pagina stessa che contine il form, quindi index.php?
    La cosa più logica è l'invio ad un secondo file, quindi l'uso di check.php, che è la cosa che si fa solitamente, in una pagina c'è il form e in un'altra il codice che riceve i dati e li elabora.
    In questo caso
    codice:
    // index.php
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8" />
            <title>Login</title>
        </head>
        <body>
            <form method="post" action="check.php">
                <label>Nome utente</label>
                <input type="text" name="uname" placeholder="Nome utente"><br>
                <label>Password</label>
                <input type="password" name="password" placeholder="Password"><br>
                <input name="accedi" type="submit" value="Accedi">
            </form>
        </body>
    </html>
    Codice PHP:
    // check.php
    session_start();
    if( isset(
    $_POST["accedi"] )
    {
        if( 
    $_POST["uname"] == "admin" && $_POST["password"] == "prova" )
        {
            
    $_SESSION['abilitato'] = 1;
            echo 
    "Utente loggato";
        }
        else
        {
            echo 
    "Username o password errati";
        }


  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2022
    Messaggi
    17
    Ho messo $_POST sia nel codice che nel form e corretto l'action inserendo #
    In base al testo dell'esercizio devo fare il controllo su utente e password(rispettivamente=admin e prova) e quindi impostare la sessione 'abilitato' =1 nell'index
    Mentre nel check devo solo controllare se la sessione =1 allora la sessione è abilitata altrimenti devo tornare indietro.
    Facendo un po' di prove mi sono resa conto che l'index lo svolge tutto ma poi non mi passa al check.php

    Codice PHP:
    //index.php
    session_start();
    if(isset(
    $_POST["accedi"])){
    $utente$_POST["utente"];
    $password$_POST["password"];    
    if(
    $utente == "admin" && $password == "prova"){ 
           
    $_SESSION['abilitato'] = 1;       
    }}
    ?><!DOCTYPE html><!--Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this licenseClick nbfs://nbhost/SystemFileSystem/Templates/Project/PHP/PHPProject.php to edit this template--><html>    <head>        <meta charset="UTF-8">        <title>Login</title>    </head>    <body>     <form method="post" action="#">         <label>Nome utente</label>
            <input type="text" name="utente" placeholder="Nome utente"><br>
            <label>Password</label>
            <input type="password" name="password" placeholder="Password"><br> 
            <input type="submit" name="accedi" value="Accedi">
         </form>            </body></html> 

    Codice PHP:
    //check.php
    session_start(); 
    if(isset(
    $_SESSION['abilitato'])){
        echo 
    "sessione abilitata";
    }else {   
     print 
    "clicca <a href='index.php'>qui</a>";
    }
     
    ?>
    <!DOCTYPE html><!--Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this licenseClick nbfs://nbhost/SystemFileSystem/Templates/Scripting/EmptyPHPWebPage.php to edit this template--><html>    <head>        <meta charset="UTF-8">        <title></title>    </head>    <body>
        </body></html> 
    Ultima modifica di Maggi; 02-01-2023 a 02:50

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Non ti passa a check.php perché da nessuna parte la chiami.
    Metti dentro a index.php un link <a href="check.php">Pagina check</a>
    in modo da cliccarci sopra dopo aver inviato i dati del form.
    Se invece vuoi che accada automaticamente, devi usare la funzione
    header("Location: check.php");
    da mettere subito dopo il settaggio della variabile $_SESSION['abilitato']

    Prendi l'abitudine di non fare questa cosa

    $utente = $_POST["utente"];
    $password = $_POST["password"];

    è solo uno spreco, hai 2 variabili identiche duplicate senza che ce ne sia bisogno.
    Usa direttamente $_POST['...'] come nel codice che ti ho scritto nel post precedente.
    Ultima modifica di Alhazred; 02-01-2023 a 15:44

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.