Visualizzazione risultati 1 fino 19 di 19

Discussione: problemi con mysqli

  1. #1
    Guest

    Predefinito problemi con mysqli

    Salve a tutti,

    Avrei bisogno del vostro aiuto al più presto in quanto sto creando un sito ma mi sono impicciato. In pratica ho creato il dfile di registrazione, poi ho collegato con il method get il file all'iscrizione, ma quando vado a premse sull'"invio dati" mi registra tutti campi vuoti. Ora posto qualche codice spero che qualcuno mi possa veramente aiutare. Grazie Sono giorno che ci combatto senza ottenere risultati.

    tabella utenti:

    Codice PHP:
    create table utenti (

    id INT(11) NOT NULL AUTO_INCREMENT,
    cognome VARCHAR(80) NOT NULL,
    nome VARCHAR(80) NOT NULL,
    username VARCHAR(80) NOT NULL,
    email VARCHAR(80) NOT NULL,
    password VARCHAR(10) NOT NULL,
    attivo ENUM('1', '0') DEFAULT '0',
    PRIMARY KEY (id)
    );
    registrazione.php

    Codice PHP:

    <!DOCTYPE html>
    <
    html>
    <
    head>
    <
    meta charset="utf-8">
    <
    script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
    $(".controllo").attr("src","no.png");
    $(".controllo").hide();
    startTime();
    $("form").submit(function(event){
    event.preventDefault();
    });

    $("#nome").change(function(){
    var valore = $("#nome").val();
    var l = valore.length;
    if(l<2){
    $("#nome").val("");
    $("#nomectrl").attr("src","no.png");
    $("#nomectrl").show();
    }else{
    $("#nomectrl").attr("src","si.png");
    $("#nomectrl").show();
    }
    });

    $("#cognome").change(function(){
    var valore = $("#cognome").val();
    var l = valore.length;
    if(l<2){
    $("#cognome").val("");
    $("#cognomectrl").attr("src","no.png");
    $("#cognomectrl").show();
    }else{
    $("#cognomectrl").attr("src","si.png");
    $("#cognomectrl").show();
    }
    });

    $("#username").change(function(){
    var valore = $("#username").val();
    var l = valore.length;
    if(l<8){
    $("#username").val("");
    $("#usernamectrl").attr("src","no.png");
    $("#usernamectrl").show();
    }else{
    var campo = "username";
    loadXMLDoc(valore,campo);
    }
    });

    $("#email").change(function(){
    var valore = $("#email").val();
    var i = valore.indexOf("@");
    if(i==-1){
    $("#email").val("");
    $("#emailctrl").attr("src","no.png");
    $("#emailctrl").show();
    }else{
    var campo = "email";
    loadXMLDoc(valore,campo);
    }
    });

    $("#email2").change(function(){
    var valore = $("#email2").val();
    var valore2 = $("#email").val();
    if(valore===valore2){
    $("#email2ctrl").attr("src","si.png");
    $("#email2ctrl").show();
    }else{
    $("#email2").val("");
    $("#email2ctrl").attr("src","no.png");
    $("#email2ctrl").show();
    }
    });

    });

    function startTime() {
    var today=new Date();
    var dd = today.getDate();
    var mm = today.getMonth();
    mm++;
    var aaaa = today.getFullYear();

    if(dd<10){
    dd = "0"+dd;
    }
    if(mm<10){
    mm = "0"+mm;
    }

    $("#testa h2").html(dd+"/"+mm+"/"+aaaa);
    }


    function loadXMLDoc(valore,campo)
    {
    var xmlhttp;
    if (window.XMLHttpRequest){
    xmlhttp=new XMLHttpRequest();
    }else{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState==4 && xmlhttp.status==200){
    var risposta = xmlhttp.responseText;
    var n = risposta.indexOf("VERO");
    if (n==-1){
    $("#"+campo+"ctrl").attr("src","si.png");
    }else{
    $("#"+campo+"ctrl").attr("src","no.png");
    $("#"+campo).val("");
    }
    $("#"+campo+"ctrl").show();
    }
    }
    xmlhttp.open("GET","cerca.php?valore='"+valore+"'&campo='"+campo+"'",true);
    xmlhttp.send();
    }

    function controllo(){
    var controlla = true;
    var campoNome = $("#nome").val();
    var campoCognome = $("#cognome").val();
    var campoUsername = $("#username").val();
    var campoEmail = $("#email").val();
    var campoEmail2 = $("#email2").val();

    if(campoNome===""){
    controlla=false;
    }
    if(campoCognome===""){
    controlla=false;
    }
    if(campoUsername===""){
    controlla=false;
    }
    if(campoEmail===""){
    controlla=false;
    }
    if(campoEmail2===""){
    controlla=false;
    }

    if(controlla){
    $("form").submit(function(event){
    $(this).unbind('submit').submit();
    });
    }
    }
    </script>
    <style>
    #testa h1{
    margin:auto;
    text-align:center;
    }
    #testa h2{
    position:relative;
    top:-54px;left:20px;
    }
    #testa{
    margin-bottom:20px;
    }
    #corpo{

    }
    .controllo{
    width:32px;height:32px;
    }
    table, input{
    font-family:Arial, Sans-serif;
    font-size:150%;
    }
    table{
    margin-left:20px;
    }
    table td:nth-child(1){
    text-align:right;
    }
    </style>
    </head>
    <body>

    <div id="testa">
    <h1>TITOLO DELLA PAGINA</h1>
    <h2></h2>

    </div>

    <div id="corpo">

    <form action="iscrizione.php" method="GET">
    <table>

    <tr>
    <td>Nome:</td>
    <td><input id="nome" type="text" name="nome"/></td>
    <td><img class="controllo" id="nomectrl" src="" /></td>
    </tr>

    <tr>
    <td>Cognome:</td>
    <td><input id="cognome" type="text" name="cognome"/></td>
    <td><img class="controllo" id="cognomectrl" src="" /></td>
    </tr>

    <tr>
    <td>Username:</td>
    <td><input id="username" type="text" name="username"/></td>
    <td><img class="controllo" id="usernamectrl" src="" /></td>
    </tr>

    <tr>
    <td>Email:</td>
    <td><input id="email" type="text" name="email"/></td>
    <td><img class="controllo" id="emailctrl" src="" /></td>
    </tr>

    <tr>
    <td>Ripeti Email:</td>
    <td><input id="email2" type="text" name="email2"/></td>
    <td><img class="controllo" id="email2ctrl" src="" /></td>
    </tr>

    <tr>
    <td></td>
    <td><button type="submit" onclick="controllo()">INVIA</button></td>
    <td></td>
    </tr>

    </table>
    </form>

    </div>

    </body>
    </html>

    iscrizione.php

    Codice PHP:
    <!DOCTYPE html>

    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <?php
    require_once("connettimysqli.php");

    $id = mysqli_real_escape_string($con, $id);
    $nome = mysqli_real_escape_string($con, $nome);
    $cognome = mysqli_real_escape_string($con, $cognome);
    $username = mysqli_real_escape_string($con, $username);
    $email = mysqli_real_escape_string($con, $email);



    var_dump($nome,$cognome,$username,$email);

    $query=("INSERT INTO utenti (nome, cognome, username,email) VALUES('$nome','$cognome','$username','$email')");
    $result=mysqli_query($con,$query);

    if(
    $result){
    echo(
    "<p> Inserimento avvenuto correttamente <p>");
    } else{
    echo(
    "<br>Inserimento non eseguito");
    }

    ?>
    </body>
    </html>

    Lo sto facendo tutto con mysqli visto che il vecchio metodo è deprecato. Cosa c'è che non va per cui mi da campi in bianco ??? Grazie attendo con ansia una vostra risposta.

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Come recuperi i valori $id, $nome e gli altri nel seguente estratto di codice? Usi $_POST/$_GET?
    Codice PHP:
    $id = mysqli_real_escape_string($con, $id);
    $nome = mysqli_real_escape_string($con, $nome);
    $cognome = mysqli_real_escape_string($con, $cognome);
    $username = mysqli_real_escape_string($con, $username);
    $email = mysqli_real_escape_string($con, $email);
    Il codice per l'inserimento dei dati a prima vista sembra corretto, quindi immagino che il var_dump che hai usato mostri che tutti i valori sono nulli, giusto?

  3. #3
    Guest

    Predefinito

    Sì esattamente. Tutti vuoti.

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    E i valori iniziali delle variabili? Li leggi da $_GET?
    Sembra che tu stia cercando di leggere una variabile non inizializzata, alla quale viene assegnato valore nullo.

  5. #5
    Guest

    Predefinito

    Chi mi ha fatto l'esempio che è stato molto gentile mi ha messo get ora non so per quale motivo. Ma a me servica un controllo dei campi immessi come ci sono nei forum . ossia con una "V" libero e con una "X" a fianco occupato. In pratica mi ha fatto solo quello. Si può modificare ?? Se si mi potresti aiutare per favore non saprei come modificarlo e poi vorrei unire le due pacgine ossia "modulo iscrizione" pagina principale e "iscrizione" eliminarla e incorporarla nel "modulo iscrizione". Grazie.

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    In iscrizione.php sostituisci questo brano di codice
    Codice PHP:
    $id = mysqli_real_escape_string($con, $id);
    $nome = mysqli_real_escape_string($con, $nome);
    $cognome = mysqli_real_escape_string($con, $cognome);
    $username = mysqli_real_escape_string($con, $username);
    $email = mysqli_real_escape_string($con, $email);
    con il seguente:
    Codice PHP:
    // Stops if some fields are missing
    if ($_GET['$nome'], $_GET['cognome'], $_GET['username'], $_GET['email'])) {
    die(
    "Some fields are missing...");
    }

    $nome = mysqli_real_escape_string($con, $_GET['nome']);
    $cognome = mysqli_real_escape_string($con, $_GET['cognome']);
    $username = mysqli_real_escape_string($con, $GET_['username']);
    $email = mysqli_real_escape_string($con, $_GET['email']);
    Il problema consisteva nel fatto che stavi cercando di manipolare variabili come $nome senza prima averle definite. Quando invii dati tramite un modulo, i valori sono reperibili tramite il vettore $_GET (o $_POST), devi estrarli da lì.
    In passato la direttiva register globals permetteva l'accesso "diretto", ma successivamente questo comportamento è stato deprecato e, nelle versioni più recenti di PHP, rimosso (per motivi di sicurezza).

    Non mi sembra ci siano altri problemi con il codice, ma ti invito a verificarlo prima di proseguire.
    Ultima modifica di mzanella : 10-05-2016 alle ore 19.19.45

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    Discorso a parte, ma nota che sia il lato html che il lato php del tuo form sono rotti. Il lato html usa una quantità di javascript per duplicare funzionalità già esistenti nel browser, come la validazione dei campi. L'intero form non funziona senza javascript, perché l'html è incorretto.

    Il sorgente della pagina non dovrebbe essere molto più complesso di questo:
    Codice HTML:
    <!DOCTYPE html>
    <html><head>
      <meta charset="utf-8" />
      <style type="text/css">
    
    label {
      display: inline-block;
      width: 9em;
    }
    
    form:invalid input[type="submit"] {
      background: red; 
    }
    
    form:valid input[type="submit"] {
      background: lime;
    }
    
      </style>
    </head><body>
    
    <form action="iscrizione.php" method="POST" autocomplete="off">
      <p><label for="campo-nome">Nome</label>
         <input type="text" required id="campo-nome" name="nome" />
    
      <p><label for="campo-cognome">Cognome</label>
         <input type="text" required id="campo-cognome" name="cognome" />
    
      <p><label for="campo-username">Nome utente</label>
         <input type="text" required id="campo-username" name="username" />
    
      <p><label for="campo-email">E-mail</label>
         <input type="email" required id="campo-email" name="email" />
    
      <p><label for="campo-email2">Ripeti e-mail</label>
         <input type="email" required id="campo-email2" name="email2" />
    
      <p><input type="submit" value="Invia" />
    </form>
    
    </body></html>
    Nota i vari attributi come required oppure type="email", che ti salvano un sacco di lavoro. Poche righe di css sono sufficienti ad indicare se i campi sono corretti. Vedi anche la documentazione per :invalid.

    E la data puoi inserirla via php. Quindici righe di javascript ed una dipendenza da jQuery potrebbero essere sostituite da
    Codice PHP:
    <?php echo date('d-m-Y'); ?>

    Dal lato php mancano tutti i controlli sull'input che fai, inutilmente, in javascript. Chiunque potrebbe mandare una richiesta fatta "a mano" e riempire il tuo database di utenti invalidi. Inoltre form di questo genere, che vanno eseguiti una volta sola, dovrebbero muoversi come POST (e non GET).

    Se posso suggerire, comincia prima con un sito html senza troppi js-fronzoli, e un lato php più solido. Una volta che hai tutto funzionante, allora aggiungi il javascript per gli effetti speciali.


    edit: e se proprio vuoi usare jQuery, hai a disposizione .get(), invece di impegolarti con xmlhttp.
    Ultima modifica di dreadnaut : 10-05-2016 alle ore 21.12.56 Motivo: + nota jquery

  8. #8
    Guest

    Predefinito

    Grazie domani proverò la mofifica

  9. #9
    Guest

    Predefinito

    Ringrazio ad entrambi per il consiglio. Ero entrato nel pallone. Una parte solida cone dici dread c'è l'ho mi mancano gli effetti. Rifarò da capo il codice partendo da quello solido. Spero sempre in un vostro aiuto. Grazie a tutte e due.

  10. #10
    Guest

    Predefinito

    Ciao dreadnaut,

    Come lo potrei abbellire con le icone delle "V" e delle "X" che mi dicono se sono presenti nel db o meno ??? A parte che diventa rosso "dalla vergogna" (hihihihihih buttataccia). Mi hai parlato di .get(). MI potresti spiegare meglio per favore ??? Grazie.

  11. #11
    Guest

    Predefinito

    Ciao dreadnaut,

    Ho provato il tuo codice e funziona ovviamente. Questo quanto riporto di quello che ho fatto.

    Codice PHP:

    <!DOCTYPE html>

    <html>
    <head>
    <meta charset="UTF-8">
    <title>MODULO ISCRIZIONE</title>

    <style type="text/css">

    #intestazione{
    width:100%;
    height:100px;
    position:absolute;
    font-family: Comic Sans MS;
    top:0px;
    left:0px;
    text-align: center;
    }
    #divhr {

    position:absolute;
    top: 100px;
    font-family:Comic Sans MS;
    }
    #messaggio {

    position:relative;
    top:400px;
    font-family:Comic Sans MS;
    color:#ff0000;
    }
    label {
    display: inline-block;
    widht: 9em;
    }
    form: valid input[tyupe="submit"] {
    background: red;
    }
    </style>
    </head>
    <body>

    <div id = "intestazione">
    <h1>MODULO D'ISCRIZIONE</h1>
    <hr>
    </div>

    <div id = "divhr">

    <form method="POST" autocomplete ="off" action="<?php $_SERVER['PHP_SELF'] ?>">

    <label for =campo-nome"> Nome: </label> <input type ="text" required id = "campo-nome" name = "nome">

    <p> <p><label for =campo-cognome"> Cognome: </label> <input type ="text" required id = "campo-cognome" name = "cognome"> </p></p>

    <p> <p><label for =campo-username"> Username: </label> <input type ="text" required id = "campo-username" name = "username"> </p></p>

    <p> <p><label for =campo-email"> E-Mail: </label> <input type ="text" required id = "campo-email" name = "email"> </p></p>

    <p> <p><label for =campo-ripemail"> Ripeti-Email: </label> <input type ="text" required id = "campo-ripemail" name = "ripemail"> </p></p>

    <p> <p><label for =campo-passwod"> Password: </label> <input type ="password" required id = "campo-password" name = "password"> </p></p>

    <p> <p><label for =campo-rippassword"> Ripeti-Password: </label> <input type ="password" required id = "campo-rippassword" name = "rippassword"> </p></p>


    <div id = "center">

    <input type = "submit" value = "Invio Dati">
    </div>
    </div>

    </form>


    <?php
    require_once("connettimysqli.php");
    require_once(
    "data.php");
    echo
    "</hr>";
    if (
    $_GET[nome].$_GET[cognome].$_GET[username].$_GET[username].$_GET[email].$_GET[password]) {
    die (
    "Tutti i camppi debbono essere compilati correttamente");
    }

    $id = mysqli_real_escape_string($con, $id);
    $nome = mysqli_real_escape_string($con, $_GET[$nome]);
    $cognome = mysqli_real_escape_string($con, $_GET[$cognome]);
    $username = mysqli_real_escape_string($con, $_GET[$username]);
    $email = mysqli_real_escape_string($con, $_GET[$email]);
    $password = mysqli_real_escape_string($con, $_GET[$password]);

    ?>
    Mi puoi dire se tutto è corretto per favore ??? E poi un'altra cosa io vorrei fare in modo che la pagina registradati che devo ancora fare sia unificata nel modulo di registrazione. E poi ovviamente mancano tutti i vari controlli di sicurezza, e vorrei dicamo così abbellirlo come già ti avevo caccennato che mentre uno compila il campo fa in modo che ci sia la verifica dello username e dell'email presenti o non nel db. Mi puoi dare una mano anche in questo per favore ??? Grazie. Buona serata.

  12. #12
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    Per far si che la stessa pagina faccia da form e da elaborazione, inverti l'ordine In generale, comincia sempre le pagine con il codice php, preparando tutti i dati, e poi mandali in output con l'html. Diventa più facile gestire errori o casi particolari.

    Ad esempio:
    Codice PHP:
    <?php
    require_once("connettimysqli.php");
    require_once(
    "data.php");

    // dati in arrivo? elaboriamoli!
    if ($_POST) {

    // verifica che tutti i dati siano validi, nome utente
    // e email non siano già utilizzati, etc.
    $errore = validaDatiRegistrazione($_POST);

    // nessun errore? mandiamo avanti la registrazione
    if (!$errore) {
    $risultato = registraUtente($_POST);

    if (
    $risultato) {
    // boh, redireziona alla pagina dell'utente?
    die('Utente registrato');
    }
    }

    }


    // --- funzioni varie, che potrebbero finire in un file separato

    function validaDatiRegistrazione($dati)
    {
    if (!isset(
    $dati['nome'])) {
    return
    'Nome mancante';
    }

    // ... altri campi ...

    if (!isset($dati['email']) || !isset($dati['ripemail'])) {
    return
    'Email mancante';
    }

    if (
    $dati['email'] !== $dati['ripemail']) {
    return
    'Le due email non sono uguali';
    }

    // ... altri campi ...

    return false;
    }

    function
    registraUtente($dati)
    {
    // passiamo tutti i dati via escape in una volta sola
    $dati = array_map('mysqli_real_escape_string', $dati);

    // ... fai cose, registra gente

    return true;
    }

    ?>
    <!DOCTYPE html>
    <html><head>
    <meta charset="UTF-8">
    <title>MODULO ISCRIZIONE</title>
    <link rel="stylesheet" type="text/css" href="/css/stili-in-un-file-esterno.css" />
    </head><body>
    <h1 class="intestazione">Modulo d'iscrizione</h1>
    <div class="divhr">

    <?php if ($errore): ?>
    <div class="errore-form"><?= $errore ?></div>
    <?php endif ?>

    <form method="POST" autocomplete ="off">
    <p><label for="campo-nome"> Nome: </label> <input type="text" required id="campo-nome" name="nome">
    <p><label for="campo-cognome"> Cognome: </label> <input type="text" required id="campo-cognome" name="cognome"></p>
    <p><label for="campo-username"> Username: </label> <input type="text" required id="campo-username" name="username"></p>
    <p><label for="campo-email"> E-Mail: </label> <input type="text" required id="campo-email" name="email"></p>
    <p><label for="campo-ripemail"> Ripeti-Email: </label> <input type="text" required id="campo-ripemail" name="ripemail"></p>
    <p><label for="campo-password"> Password: </label> <input type="password" required id="campo-password" name="password"></p>
    <p><label for="campo-rippassword"> Ripeti-Password: </label> <input type="password" required id="campo-rippassword" name="rippassword"></p>
    <div class="center">
    <input type="submit" value="Invio Dati">
    </div>
    </form>

    </div>
    </body></html>
    Se vedi, la prima volta che carichi la pagina non ci sono dati in $_POST, quindi mostri il form e basta. Quando l'utente invia i dati, puoi fare tutti i controlli e se ci sono problemi mostrare di nuovo il form con un messaggio di errore.

    Così puoi già avere il controllo sul nome utente o email senza farlo via javascript, e puoi passare al prossimo pezzo del tuo sito. Se quando hai finito vuoi aggiungere il controllo "al volo", puoi farlo via javascript più o meno come nel tuo primo codice.

    Dettaglio: anche se non sembra ovvio all'inizio, è più saggio applicare css usando class="" invece di id="". Questo perché di id ne puoi avere solo uno, ma un elemento può avere più di una classe —così puoi combinare pezzi di css assieme.

  13. #13
    Guest

    Predefinito

    Grazue dei consigli. Sei un aiuto prezioso. Mi spiace romperti da solo non gliela farei. Sono sicuro. Domani provo il volo dice mi hai dato. Notte. E grazie ancora.

  14. #14
    Guest

    Predefinito problemi con mysqli

    Ciao Dreadnaut,

    Vorrei sapere soloo un chiarimento. Attualmente ho il seguente codice datomi da te l'altro giorno:

    Codice PHP:

    <?php
    require_once("connettimysqli.php");
    require_once(
    "data.php");
    echo
    "</hr>";
    if (
    $_GET[nome].$_GET[cognome].$_GET[username].$_GET[username].$_GET[email].$_GET[password]) {
    die (
    "Tutti i camppi debbono essere compilati correttamente");
    }

    $id = mysqli_real_escape_string($con, $id);
    $nome = mysqli_real_escape_string($con, $_GET[$nome]);
    $cognome = mysqli_real_escape_string($con, $_GET[$cognome]);
    $username = mysqli_real_escape_string($con, $_GET[$username]);
    $email = mysqli_real_escape_string($con, $_GET[$email]);
    $password = mysqli_real_escape_string($con, $_GET[$password]);

    ?>
    Tu mi hai scritto il seguente codice ieri:

    Codice PHP:

    <?php
    require_once("connettimysqli.php");
    require_once(
    "data.php");

    // dati in arrivo? elaboriamoli!
    if ($_POST) {

    // verifica che tutti i dati siano validi, nome utente
    // e email non siano già utilizzati, etc.
    $errore = validaDatiRegistrazione($_POST);

    // nessun errore? mandiamo avanti la registrazione
    if (!$errore) {
    $risultato = registraUtente($_POST);

    if (
    $risultato) {
    // boh, redireziona alla pagina dell'utente?
    die('Utente registrato');
    }
    }

    }
    ecc. ecc. a seguire
    Domanda quello che ho postato comep rimo codice per inytnderci:

    Codice PHP:
    echo "</hr>";
    if (
    $_GET[nome].$_GET[cognome].$_GET[username].$_GET[username].$_GET[email].$_GET[password]) {
    die (
    "Tutti i camppi debbono essere compilati correttamente");
    }
    ecc. ecc.
    Va tolto e messo quello nuovo o sbaglio ??? Inoltre dove lod evo inserire l'insert per la memorizzazione dati ??? L'unico che miviene da pensare è qua:

    Codice PHP:
    // nessun errore? mandiamo avanti la registrazione
    if (!$errore) {
    $risultato = registraUtente($_POST);

    Quan va l'insert ????
    Spero di avere dei chiarimenti al riguardo. Grazie ancora intanto dell'interessamento.
    Ultima modifica di dreadnaut : 12-05-2016 alle ore 23.45.30 Motivo: aggiustati tag php

  15. #15
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    La riga con tutti i $_GET non funzionerebbe per una serie di motivi:

    1) l'indice di un'array dovrebbe essere una stringa, non una costante non definita
    Codice PHP:
    echo $_GET['qualcosa']; // corretto
    echo $_GET[qualcosa]; // errore
    2) concatenare un sacco di stringhe e controllarne il valore ha successo se almeno una di queste non è vuota, che non è quello che vuoi controllare; tu vuoi assicurarti che nessuno dei parametri richiesti sia una stringa vuota. Puoi fare questo come ho mostrato sopra, per alcuni campi, nella funzione validaDatiRegistazione().

    3) Terminare così lo script con un die ed un messaggio non è molto bello: taglieresti la pagina a metà; è meglio salvare l'errore in una variabile e mostrarlo in una pagina intera —vedi $errore nell'esempio.


    L'inserimento nel database andrebbe fatto dentro la funzione registraUtente(), dove c'è il commento "fai cose, registra gente". Se tutto funziona ritorni il valore true, altrimenti false.
    Ultima modifica di dreadnaut : 12-05-2016 alle ore 23.54.07

  16. #16
    Guest

    Predefinito

    Ok grazie ancora domani ho giornata libera da impegni tranne la spesa, però posso provare quello che mi hai suggerito. Ti farò sapere.

  17. #17
    Guest

    Predefinito problemi con mysqli

    Ciao dreadnaut,

    Ho eseguto i tuoi cosnigli e ho iniziato a scrivere da capo il modulo. Solo che ho il seguente problema:

    Questo è quello che ho fatto secondo i tuoi suggerimenti:

    Codice PHP:

    <!DOCTYPE html>

    <html>
    <head>
    <meta charset="UTF-8">
    <title>MODULO ISCRIZIONE</title>

    <style type="text/css">

    #intestazione{
    width:100%;
    height:100px;
    position:absolute;
    font-family: Comic Sans MS;
    top:0px;
    left:0px;
    text-align: center;
    }
    #divhr {

    position:absolute;
    top: 100px;
    font-family:Comic Sans MS;
    }
    #messaggio {

    position:relative;
    top:400px;
    font-family:Comic Sans MS;
    color:#ff0000;
    }
    label {
    display: inline-block;
    widht: 9em;
    }
    form: valid input[tyupe="submit"] {
    background: red;
    }
    </style>
    </head>
    <body>

    <div id = "intestazione">
    <h1>MODULO D'ISCRIZIONE</h1>
    <hr>
    </div>

    <div id = "divhr">

    <form method="POST" autocomplete ="off" action="<?php $_SERVER['PHP_SELF'] ?>">

    <label for =campo-cognome"> Nome: </label> <input type ="text" required id = "campo-cognome" name = "cognome">

    <p> <p><label for =campo-nome"> Nome: </label> <input type ="text" required id = "campo-nome" name = "nome"> </p></p>

    <p> <p><label for =campo-username"> Username: </label> <input type ="text" required id = "campo-username" name = "username"> </p></p>

    <p> <p><label for =campo-email"> E-Mail: </label> <input type ="text" required id = "campo-email" name = "email"> </p></p>

    <p> <p><label for =campo-ripemail"> Ripeti-Email: </label> <input type ="text" required id = "campo-ripemail" name = "ripemail"> </p></p>

    <p> <p><label for =campo-passwod"> Password: </label> <input type ="password" required id = "campo-password" name = "password"> </p></p>

    <p> <p><label for =campo-rippassword"> Ripeti-Password: </label> <input type ="password" required id = "campo-rippassword" name = "rippassword"> </p></p>


    <div id = "center">

    <input type = "submit" value = "Invio Dati">
    </div>
    </div>

    </form>


    <?php
    require_once("connettimysqli.php");
    require_once(
    "data.php");
    echo
    "</hr>";

    $id = mysqli_real_escape_string($con, $id);
    $cognnome = mysqli_real_escape_string($con, $_GET[$cognome]);
    $nome = mysqli_real_escape_string($con, $_GET[$nome]);
    $username = mysqli_real_escape_string($con, $_GET[$username]);
    $email = mysqli_real_escape_string($con, $_GET[$email]);
    $password = mysqli_real_escape_string($con, $_GET[$password]);

    if (
    $_POST) {
    $errore = validatiregistratizione($_POST);

    // Nessun errore, tutti i dati sono inseriti correttamente

    if ($errore) {
    $risultato = registraUtente($_POST):

    if (
    $risultato) {
    die(
    "Iscrizione dell'utente avvenuta correttamente");
    }else{
    echo(
    "Utente non registrato correttamente. verificare i campi. Grazie");
    }
    }

    }
    # Funzioni varie

    function validaDatiregistrati($dati) {
    if(!isset(
    $dati['cognome']);
    return
    "Attenzione: cognome mancante";
    }

    if(!isset(
    $dati['nome']);
    return
    "Attenzione: nome mancante";
    }

    if(!isset(
    $dati['email']);
    return
    "Attenzione: email mancante";
    }


    if(!isset(
    $dati['ripemail']);
    return
    "Attenzione: la seconda email per verifica mancante"
    . " mancante";
    }

    if(!isset(
    $dati['password']);
    return
    "Attenzione: password mancante";
    }

    if(!isset(
    $dati['password']);
    return
    "Attenzione: la seconda password per verifica mancante";
    }

    if(!isset(
    $dati['email'])) || !isset($sati[ripemail])){

    return
    "Attenzione: email mancante. verificare prego.";
    }
    if(
    $dati['email'])!==$dati['ripemail'] {

    return
    "Le due email non coincidono. Prego ridigitarle !!!";
    }


    if(
    $dati['password'])!==$dati['rippassword'] {

    return
    "Le due password non coincidono. Prego ridigitarle !!!";
    }

    ?>
    Eseguendolo mi da il seguente errore:

    Parse error: syntax error, unexpected ':' in /volume1/web/utenti/socialnet/iscrizione.php on line 94
    La riga 94 dovrebbe errere la seguente:

    riga 94:

    $risultato = registraUtente($_POST):

    Poi come potrai notare manca la prima parte ossia questa:

    Codice PHP:
    <!DOCTYPE html>
    <html><head>
    <meta charset="UTF-8">
    <title>MODULO ISCRIZIONE</title>
    <link rel="stylesheet" type="text/css" href="/css/stili-in-un-file-esterno.css" />
    </head><body>
    <h1 class="intestazione">Modulo d'iscrizione</h1>
    <div class="divhr">

    <?php if ($errore): ?>
    <div class="errore-form"><?= $errore ?></div>
    <?php endif ?>
    In quanto lo stile è già inserito nel foglio stesso all'inizio. E in ultima fase mi è venuto un dubbio di cui non ricordo assolutamente. In pratica quando si definisce l'i all'interno dello stile, la formula è la seguente:


    #divhr {

    position:absolute;
    top: 100px;
    font-family:Comic Sans MS;
    }
    Giusto o sbagliato ??? Invece per la classe dovrebbe essere senza il simbolo "#" ossia così ???



    divhr {

    position:absolute;
    top: 100px;
    font-family:Comic Sans MS;
    }
    Sbagliato ???? Se c'è qualcosa di sbagliato o che va modificato me lo puoi correggere per favore ??? Grazie aspetto tue notizie prima di andare avanti.

  18. #18
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    Citazione Originalmente inviato da fabiodefe Visualizza messaggio
    Eseguendolo mi da il seguente errore:
    Hai la riga, hai il messaggio di errore. Non riesci a correggerlo da solo? Il ":" alla fine della riga è sbagliato... cosa c'è di solito alla fine di una riga in php?

    Citazione Originalmente inviato da fabiodefe Visualizza messaggio
    Giusto o sbagliato ??? Invece per la classe dovrebbe essere senza il simbolo "#" ossia così ???

    Sbagliato ???? Se c'è qualcosa di sbagliato o che va modificato me lo puoi correggere per favore ??? Grazie aspetto tue notizie prima di andare avanti.
    Qualche messaggio fa ti ho linkato un tutorial sul css, dove spiegava esattamente le cose che mi chiedi. Da cui deduco che non lo hai letto

    Va avanti da solo ora, hai tutti i pezzi del rompicapo. E se anche te ne mancano, Google ha un sacco di risposte su come iniziare.

  19. #19
    Guest

    Predefinito

    Ok grazie.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •