Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Fermare un ciclo Foreach

    Salve, mi sono iscritto al forum di HTML.it per esporre alcuni miei problemi e dubbi su un esercizio di allenamento che sto facendo.
    Praticamente quando sono stati inviati i dati tramite metodo post, i dati vengono inseriri in un array unico, una volta inseriti, effettuo un controllo con is_int() per vedere se le credenziali sono state inserite (se non sono state inserite do un messaggio d'errore), il mio primo dubbio è se ho fatto bene usare is_int() o se dovevo usare altre funzioni. Poi andando avanti controllo se le password inserite coincidono, se coincidono do' il responso con un ciclo per mostrare le credenziali inserite, solo che non vorrei mostrare il ControllPass, cioé, vorrei che il ciclo s'interrompesse a Password
    Scusate la mia ignoranza ma ho solo 14 anni e studio php da 2 mesetti

    Codice PHP:
    <?php
        
    // Inserisco i dati in un array
        
    $credenziali = array('Username' => ($_POST['username']), 'Password' => ($_POST['pass1']), 'ControllPass' => ($_POST['pass2']));
                
        
    // Controllo che non siano stati lasciati campi vuoti
        
    if (is_int($credenziali)) {
            
    // Controllo se le password inserite coincidono
            
    if ($credenziali['Password'] == $credenziali['ControllPass']) {
                echo 
    'Congratulazioni, hai effettuato la registrazione con successo
     Ecco le tue credenziali:'
    ;
                
    // Eseguo un ciclo per mostrare le credenziali inserite
                
    foreach ($credenziali as $key => $value) {
                    echo 
    "
    [b]" 
    .$key ."[/b] = "  .$value;
                            }
            }
            else {
                echo 
    'Le password non coincidono';
                }
        }
        else {
            echo 
    'Non hai compilato nessun campo';
            }
    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    un array in php è un array non ha alcun tipo, cioè non esiste in php un array di interi piuttosto che di float o di stringhe.

    I controlli che dovresti fare sono almeno, quello per vedere se $_POST[chiave] è settato,
    usando isset.

    Poi per vedere se $_POST['chiave'] contiene quello che desideri, allora puoi usare il controllo che fa al caso tuo sul tipo o sul contenuto vero e proprio (dai un'occhiata alle espressioni regolari).

    In ogni caso per uscire da un ciclo o usi il ciclo for, while o do while al posto del foreach usando l'opportuna condizione oppure al verificarsi di determinate condizioni usi il comando break.

  3. #3
    Io ho usato isset la prima volta però mi passava alla funziona da fare anche se non avevo inserito alcun dato all'interno, e infatti come risultato finale mi usciva:

    Congratulazioni, hai effettuato la registrazione con successo
    Ecco le tue credenziali:
    Username:
    Password:


    Praticamente non vorrei che venga impostato un valore null nella variabile e isset me la filtrasse lo stesso. Se sto dicendo qualche cavolata correggetemi

  4. #4
    Però basterebbe una veloce lettura del manuale:

    is_int() verifica che il dato passato in input sia un intero, per cui non capisco cosa vorresti ottenere passandogli un array.

    isset() controlla se la variabile passata è null, per cui nel tuo caso controllerebbe solamente che l'array è null e non i dati in esso contenuti.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Sì, ma allora cosa dovrei usare, ora ho provato il codice e non funziona cioè se metto e non metto dati come risultato mi da sempre Non hai compilato nessun campo
    Questo è il PHP dell'action.php
    Codice PHP:
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Prove in PHP</title>
            <link rel="stylesheet" type="text/css" href="style.css" />
        </head>
        <body>
            <div id="register">
                <?php
                
    // Inserisco i dati in un array
                    
    $credenziali = array('Username' => ($_POST['username']), 'Password' => ($_POST['pass1']), 'ControllPass' => ($_POST['pass2']));
                
                
    // Controllo che non siano stati lasciati campi vuoti
                    
    if (is_int($credenziali)) {
                        
    // Controllo se le password inserite coincidono
                        
    if ($credenziali['Password'] == $credenziali['ControllPass']) {
                            echo 
    "Congratulazioni, hai effettuato la registrazione con successo
     Ecco le tue credenziali:
    "
    ;
                            echo 
    "[b]Username:[/b] " .$credenziali['username'];
                            echo 
    "
    "
    ;
                            echo 
    "[b]Password:[/b]" .$credenziali['pass1'];
                        }
                        else {
                            echo 
    "Le password non coincidono";
                        }
                    }
                    else {
                        echo 
    "Non hai compilato nessun campo";
                        }
                
    ?>
             </div>
        </body>
    </html>
    Questo è quello dell'index.html

    codice:
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Prove in PHP</title>
            <link rel="stylesheet" type="text/css" href="style.css" />
        </head>
        <body>
        	<div id="register">
    			<form method="post" action="action.php">
            		<label>Username: <input type="text" name="username" /></label>
               		<label>Password: <input type="password" name="pass1" /></label>
               	 	<label>Ripeti password: <input type="password" name="pass2" /></label>
            		<input type="submit" value="Registrati!" />
                	<input type="reset" value="Resetta!" />
            	</form>
         	</div>
        </body>
    </html>

  6. #6
    Originariamente inviato da Slowhand
    Sì, ma allora cosa dovrei usare, ora ho provato il codice e non funziona cioè se metto e non metto dati come risultato mi da sempre Non hai compilato nessun campo
    Questo è il PHP dell'action.php
    Codice PHP:
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Prove in PHP</title>
            <link rel="stylesheet" type="text/css" href="style.css" />
        </head>
        <body>
            <div id="register">
                <?php
                
    // Inserisco i dati in un array
                    
    $credenziali = array('Username' => ($_POST['username']), 'Password' => ($_POST['pass1']), 'ControllPass' => ($_POST['pass2']));
                
                
    // Controllo che non siano stati lasciati campi vuoti
                    
    if (is_int($credenziali)) {
                        
    // Controllo se le password inserite coincidono
                        
    if ($credenziali['Password'] == $credenziali['ControllPass']) {
                            echo 
    "Congratulazioni, hai effettuato la registrazione con successo
     Ecco le tue credenziali:
    "
    ;
                            echo 
    "[b]Username:[/b] " .$credenziali['username'];
                            echo 
    "
    "
    ;
                            echo 
    "[b]Password:[/b]" .$credenziali['pass1'];
                        }
                        else {
                            echo 
    "Le password non coincidono";
                        }
                    }
                    else {
                        echo 
    "Non hai compilato nessun campo";
                        }
                
    ?>
             </div>
        </body>
    </html>
    Questo è quello dell'index.html

    codice:
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Prove in PHP</title>
            <link rel="stylesheet" type="text/css" href="style.css" />
        </head>
        <body>
        	<div id="register">
    			<form method="post" action="action.php">
            		<label>Username: <input type="text" name="username" /></label>
               		<label>Password: <input type="password" name="pass1" /></label>
               	 	<label>Ripeti password: <input type="password" name="pass2" /></label>
            		<input type="submit" value="Registrati!" />
                	<input type="reset" value="Resetta!" />
            	</form>
         	</div>
        </body>
    </html>
    Cosa ti aspetti che ti venga restituito da questa istruzione?

    Codice PHP:
    ...
    if (
    is_int($credenziali)) { 
    ... 
    dove $credenziali è un array?!?! Ovviamente false per cui non entra mai nell'if (se è un array NON è un intero)

    Devi scorrere l'array e verificarne il contenuto campo per campo per capire se ed eventualmente quli campi sono vuoti.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Ah, quindi no va bene metterei dei dati di una registrazione in un array?
    Perché oltre a quei dati devo metterne altri da registrare e devo suddividerli in altri gruppi e quindi pensavo di usare un array per contenere dei dati esempio
    $login = array('Username', 'Password', 'Email')
    $recapito = array('Telefono', 'Indirizzo')
    $social = array('Facebook', 'Messenger', 'Skype')

  8. #8
    Originariamente inviato da Slowhand
    Ah, quindi no va bene metterei dei dati di una registrazione in un array?
    Dove hai letto questo nella mia risposta?!

    Ho semplicemente detto che in questo caso per verificarne la congruenza devi scorrere l'array e controllarli uno per uno.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Chiedo scusa ho frainteso, intendi così?
    Codice PHP:
                <?php
                
    // Inserisco i dati in un array
                    
    $credenziali = array('Username' => ($_POST['username']), 'Password' => ($_POST['pass1']), 'ControllPass' => ($_POST['pass2']));
                
    // Controllo che non siano stati lasciati campi vuoti
                    
    if (isset($credenziali['Username']) && isset($credenziali['Password']) && isset($credenziali['ControllPass'])) {
                        
    // Controllo se le password inserite coincidono
                        
    if ($credenziali['Password'] == $credenziali['ControllPass']) {
                            echo 
    "Congratulazioni, hai effettuato la registrazione con successo
     Ecco le tue credenziali:
    "
    ;
                            echo 
    "[b]Username:[/b] " .$credenziali['Username'];
                            echo 
    "
    "
    ;
                            echo 
    "[b]Password:[/b]" .$credenziali['Password'];
                        }
                        else {
                            echo 
    "Le password non coincidono";
                        }
                    }
                    else {
                        echo 
    "Non hai compilato nessun campo";
                        }
                
    ?>

  10. #10
    Ti ho detto (ed anche linkato il manuale, che nessuno si degna mai di leggere) che isset() verifica solamente il fatto che la variabile sia diversa da null, per cui nel tuo caso la stringa vuota verrebbe accettata. Devi rafforzare i controlli.
    Con empty() ad esempio, oltre che il null verifiche anche che la stringa contenga qualcosa e non sia vuota.
    Comunque dovresti utilizzare le espressioni regolari che limitare il tipo di caratteri ammessi e verificare che non vengano utilizzati caratteri speciali ad esempio.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.