Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    123

    php - problema nel registrare 3 values su mysql

    Ciao a tutti ragazzi. Ho qualche problema a registrare email nome e cognome su un database.
    Quando l'utente clicca su continua la pagina diventa vuota e non c'è trascrizione su database mysql...
    Innanzitutto il database mysql non fa parte dello stesso pacchetto hoster (sito e mysql sono su due account aruba diversi) potrebbe essere questo il problema?

    il codice è semplicissimo:

    Codice PHP:
    <?php 
        
    if(isset($_GET['sent'])) { 
             
            
    $rules = array( 
                
    'email' => array('req''email' => true), 
                
    'name' => array('req''minlength' => 3), 
                
    'surname' => array('req''minlenght' => 2), 
            ); 
             
            
    $errors = array(); 
             
            foreach(
    $rules as $name => $rule) { 
                if((! isset(
    $_POST[$name])) || empty($_POST[$name])) { 
                    
    $errors[$name] = 'Obbligatorio'
                    continue; 
                } 
                 
                if(isset(
    $rule['email'])) 
                    if(
    preg_match('/^[a-z0-9][_.a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})$/i'$_POST[$name]) == false) { 
                        
    $errors[$name] = 'Email non valida'
                        continue; 
                    } 
                 
                if(isset(
    $rule['minlength'])) 
                    if(
    strlen($_POST[$name]) < $rule['minlength']) { 
                        
    $errors[$name] = 'Minimo ' $rule['minlength'] . ' caratteri'
                        continue; 
                    } 
                 
                if(isset(
    $rule['length'])) 
                    if(
    strlen($_POST[$name]) != $rule['length']) { 
                        
    $errors[$name] = 'Inserisci ' $rule['length'] . ' caratteri'
                        continue; 
                    } 
                 
                if(isset(
    $rule['values'])) 
                    if(! 
    in_array($_POST[$name], $rule['values'])) { 
                        
    $errors[$name] = 'Obbligatorio'
                        continue; 
                    } 
            } 
             
            if(
    count($errors) > 0
                
    $showform true
            else { 
                
    $showform false
                 
                
    $dbConn = @mysqli_connect('IP DEL SERVER''NOME''PASSWORD''NOME DEL DATABASE'); 
                if(! 
    $dbConn
                    
    $error 'Qualcosa non ha funzionato.
    Per favore, riprova più tardi'

                else {                 
                    
    $query 'INSERT INTO concorso (email, name, surname) VALUES(' 
                        
    ''' . $_POST['email'] . '',' 
                        
    ''' . $_POST['name'] . '',' 
                        
    ''' . $_POST['surname'] . '',' 
                        
    ')'
                     
                    
    mysqli_query($dbConn$query); 
                } 
            } 
         
        } 
        else 
            
    $showform true
             
        if(
    $showform) { 
    ?> 
        <form action="?sent=true" method="post"> 
                    <center>[b]<p style="color: white; font-size:13px;">Informazioni personali</p>[/b] 
                    <label for="email"><p style="color: white; font-size:11px;">[b]Indirizzo email[/b]<?= isset($errors['email']) ? ' <span class="error">' $errors['email'] . '</span>' ''?></label>
     
                    <input type="text" name="email" id="email" value="<?=$_POST['email'];?>" /> 
                    <label for="name"><p style="color: white; font-size:11px;">[b]Nome[/b]<?= isset($errors['name']) ? ' <span class="error">' $errors['name'] . '</span>' ''?></label>
     
                    <input type="text" name="name" id="name" value="<?=$_POST['name'];?>" /> 
                    <label for="surname"><p style="color: white; font-size:11px;">[b]Cognome[/b]<?= isset($errors['surname']) ? ' <span class="error">' $errors['surname'] . '</span>' ''?></label>
     
                    <input type="text" name="surname" id="surname" value="<?=$_POST['surname'];?>" /></center> 
                  <center><input type="image" src="img/inviabtn.png" /></center> 
    <? 
        
    } elseif(isset($error)) { ?> 
        



    <h1><center><?= $error?></center></h1> 
    <? 
        
    } else { ?> 
        



    <h1><center>Grazie di aver partecipato!
    Ti invieremo una mail se sarai selezionato tra i vincitori.<center></h1> 
    <? 
        
    ?>
    Ragazzi aiuto!! ci sto sbattendo la testa da una settimana

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    chi ti ha insegnato usare cosi gli apici singoli: ''' ? :lore:

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    123
    mmmmmm.... ragazzi io arrivo da c++ e arduino e non so nulla di php quello che leggete...l'ho riscritto estrapolandolo da un esempio che mi ha mandato un amico...

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Non vorrai dirmi che in c++ tu puoi definire un apice singolo come character literal senza fargli un escape prima :lore:

    Ad ogni modo dai una bella lettura alle basi, per capire come si usa una stringa in php. Se comprendi tutto trovi da solo l'errore di sintassi nel tuo codice . Se vieni veramente dal mondo c++, tutto questo per te sara' estremamente facile

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    123
    Mmm...
    mi rendo conto di essere niubbo... ma non capisco dov'è l'errore.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    123
    Codice PHP:
    <?php
        
    if(isset($_GET['sent'])) {
            
            
    $rules = array(
                
    'email' => array('req''email' => true),
                
    'name' => array('req''minlength' => 3),
                
    'surname' => array('req''minlenght' => 2)
            );
            
            
    $errors = array();
            
            foreach(
    $rules as $name => $rule) {
                if((! isset(
    $_POST[$name])) || empty($_POST[$name])) {
                    
    $errors[$name] = 'Obbligatorio';
                    continue;
                }
                
                if(isset(
    $rule['email']))
                    if(
    preg_match('/^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})$/i'$_POST[$name]) == false) {
                        
    $errors[$name] = 'Email non valida';
                        continue;
                    }
                
                if(isset(
    $rule['minlength']))
                    if(
    strlen($_POST[$name]) < $rule['minlength']) {
                        
    $errors[$name] = 'Minimo ' $rule['minlength'] . ' caratteri';
                        continue;
                    }
                
                if(isset(
    $rule['length']))
                    if(
    strlen($_POST[$name]) != $rule['length']) {
                        
    $errors[$name] = 'Inserisci ' $rule['length'] . ' caratteri';
                        continue;
                    }
                
                if(isset(
    $rule['values']))
                    if(! 
    in_array($_POST[$name], $rule['values'])) {
                        
    $errors[$name] = 'Obbligatorio';
                        continue;
                    }
            }
            
            if(
    count($errors) > 0)
                
    $showform true;
            else {
                
    $showform false;
                
                
    $dbConn = @mysqli_connect('ip''nome''pass''nomedb');
                if(! 
    $dbConn)
                    
    $error 'Qualcosa non ha funzionato.
    Per favore, riprova più tardi'
    ;
                else {                
                    
    $query 'INSERT INTO concorso (email, name, surname) VALUES(' .
                        
    '\'' $_POST['email'] . '\',' .
                        
    '\'' $_POST['name'] . '\',' .
                        
    '\'' $_POST['surname']. '\''.
                        
    ')';
                    
                    
    mysqli_query($dbConn$query);
                }
            }
        
        }
        else
            
    $showform true;
            
        if(
    $showform) {
    ?>
        <form action="?sent=true" method="post">
                    <center><p style="color: white; font-size:15px; margin:7px 0px 5px 20px;">[b]Informazioni personali[/b]</p></center>
                    <label for="email"><p style="color: white; font-size:12px; margin:0px 0px 0px 10px;">[b]Indirizzo email[/b]<?= isset($errors['email']) ? ' <span class="error">' $errors['email'] . '</span>' ''?></label>

                    <input type="text" name="email" id="email" value="<?=$_POST['email'];?>" style="margin:0px 0px 7px 20px;" />
                    <label for="name"><p style="color: white; font-size:12px;  margin:0px 0px 0px 10px;">[b]Nome[/b]<?= isset($errors['name']) ? ' <span class="error">' $errors['name'] . '</span>' ''?></label>

                    <input type="text" name="name" id="name" value="<?=$_POST['name'];?>" style=" margin:0px 0px 7px 20px;" />
                    <label for="surname"><p style="color: white; font-size:12px;  margin:0px 0px 0px 10px;">[b]Cognome[/b]<?= isset($errors['surname']) ? ' <span class="error">' $errors['surname'] . '</span>' ''?></label>

                    <input type="text" name="surname" id="surname" value="<?=$_POST['surname'];?>" style=" margin:0px 0px 7px 20px;" /></center>
                  
                                  <input type="image" src="img/inviabtn.png" />
    <?
        
    } elseif(isset($error)) { ?>
        <h1><center><?= $error?></center></h1>
    <?
        
    } else { ?>
        



    <h1><center>Grazie di aver partecipato!
    Ti invieremo una mail se sarai selezionato tra i vincitori.<center></h1>
    <?
        
    ?>
    Ho trovato un paio di errori uno nella query e un'altro nell'array rules (una virgola di troppo) ma non riesco comunque a farlo funzionare...

  7. #7
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    dalla pagina che ti ho consigliato di leggere, e che non hai letto:
    The simplest way to specify a string is to enclose it in single quotes (the character ').

    To specify a literal single quote, escape it with a backslash (\).
    Ora dimmi tu cosa non va in questa sintassi:
    Codice PHP:
    $query 'INSERT INTO concorso (email, name, surname) VALUES(' .
                        
    ''' . $_POST['email'] . '',' .
                        
    ''' . $_POST['name'] . '',' .
                        
    ''' . $_POST['surname']. '''.
                        
    ')'

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    123
    Devo mettere un \ .... alla fine?
    Codice PHP:
    $query 'INSERT INTO concorso (email, name, surname) VALUES(' 
                        
    ''' . $_POST['email'] . '',' 
                        
    ''' . $_POST['name'] . '',' 
                        
    ''' . $_POST['surname']. '''(\ qui?) 
                        
    ')'

  9. #9
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    No! Devi fare un escape di ogni apice singolo che hai dentro una stringa delimitata da apici singoli.

    Quindi deve diventare cosi:

    $query = 'INSERT INTO concorso (email, name, surname) VALUES(' .
    '&#92;'' . $_POST['email'] . '&#92;',' .
    '&#92;'' . $_POST['name'] . '&#92;',' .
    '&#92;'' . $_POST['surname']. '&#92;''.
    ')';

    Superfluo dire che devi prima pulire qualsiasi input che ti arriva dall'utente (post, get, etc)

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    123
    Grazie infiniteeee
    Cosa intendi con pulire?

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.