• User

    Problema registrazione

    Ciao a tutti...sono nuovo di qui 😄 Piano piano sto cercando di creare un browser game...e mi sono bloccato alla registrazione da qualche giorno xDxD

    Naturalmente uso un database mysql, dove ho una tabella chiamata lista_utenti cn id (key primaria), nickname (varchar), email (varchar) e password (varchar). All'inizio mi dava vari errori di connessione...ora che sembra non darmi alcun errore...non mi inserisce i dati lo stesso...non è un problema di altervista perchè ho provato anche in locale..stessa cosa 😕

    Ecco lo script:

    <html>
    <head>
    <title>Registrazione</title>
    <link rel=stylesheet href="css/stylesito.css" type="text/css">
    </head>
    <body>
    <a href="index.php">Home Page</a><br>
    <a href="ilgioco.php">Il Gioco</a><br>
    <text class="linkdellapaginavisualizzata">Registrazione</text><br>
    <a href="">Forum</a><br>
    <center><form id="registrazione" action="registrazione.php" method="post" name="registrazione">
    nickname:<input type="text" name="Nickname" value="">
    <p>email:<input type="text" name="Email" value=""></p>
    <p>password:<input type="password" name="Password" value=""></p>
    <p><input type="submit" value="Registrati"></p>
    </form></center>

    <?php

    $DBhost= "localhost";
    $DBuser= ".........."; //naturalmente in quello originale i dati sono inseriti 😄
    $DBpass= "..........";
    $DBname= "....................";

    $link= mysql_connect($DBhost,$DBuser,$DBpass,$DBname) or die("impossibile collegarsi al server");
    $link1= mysql_select_db($DBname,$link) or die("impossibile connettersi al database");
    $nickname= $_post['Nickname'];
    $email= $_post['Email'];
    $password= $_post['Password'];
    @mysql_query($nickname,$email,$password) or die(mysql_error());
    $sql= "INSERT INTO lista_utenti(nickname, email, password) values ('$nickname', '$email', '$password')";

    mysql_query($sql) or die(mysql_error());

    @mysql_close($link);

    ?>

    </body>
    </html>

    EDIT: ho provato a mettere come action della form, una pagina esterna, ho provato tutte le combinazioni di apici ' ` virgolette " ecc.....sono disperato XD

    Grazie dell'aiuto 🙂


  • ModSenior

    Ciao,

    Aggiungi all'nizio:
    [php]
    ini_set('error_reporting', 6143);
    [/php]

    Per abilitare gli errori, che su altervista sono nascosti, e probabilmente anche da te in locale.


  • User

    Ok grazie, su altervista continua a non darmi errori, mentre in locale, aggiungendo quella riga mi da l'errore su queste righe: (anche se nn riesco proprio a capire dove sbaglio XD)

    $nickname= $_post['Nickname'];
    $email= $_post['Email'];
    $password= $_post['Password'];

    Notice: Undefined variable: _post in C:\WM\www\Progetto\registrazione.php on line 29

    Notice: Undefined variable: _post in C:\WM\www\Progetto\registrazione.php on line 30

    Notice: Undefined variable: _post in C:\WM\www\Progetto\registrazione.php on line 31


  • ModSenior

    Ciao eretis,

    Devi usare $_POST non $_post.
    PHP è case sensitive. 😉


  • User

    Che sbadato lol!!!

    Ho modificato...ed è cambiato l'errore...ci avviciniamo alla soluzione 😄

    php:

    **$nickname= $_POST[Nickname];
    $email= $_POST[Email];
    $password= $_POST[Password];**errori:

    Notice: Undefined index: in C:\WM\www\Progetto\registrazione.php on line 29

    Notice: Undefined index: in C:\WM\www\Progetto\registrazione.php on line 30

    Notice: Undefined index: in C:\WM\www\Progetto\registrazione.php on line **31

    Ho provato " ' `, e ho controllato che nella form Nickname, Email e Password sono scritti con la prima lettera maiuscola............. 😕
    **


  • ModSenior

    Cosi dovrebbe funzionare:
    [php]
    $nickname= $_POST['Nickname'];
    $email= $_POST['Email'];
    $password= $_POST['Password'];
    [/php]


  • User Attivo

    Ciao!
    Dark, secondo me solo
    [php]$nickname= $_POST['Nickname'];
    $email= $_POST['Email'];
    $password= $_POST['Password']; [/php]
    non può funzionare...
    E' vero che ci sono i backticks , però si potrebbe totalmente eliminare l'errore così:
    [php] <html>
    <head>
    <title>Registrazione</title>
    <link rel=stylesheet href="css/stylesito.css" type="text/css">
    </head>
    <body>
    <a href="index.php">Home Page</a><br>
    <a href="ilgioco.php">Il Gioco</a><br>
    <text class="linkdellapaginavisualizzata">Registrazione</text><br>
    <a href="">Forum</a><br>
    <center><form id="registrazione" action="registrazione.php" method="post" name="registrazione">
    nickname:<input type="text" name="Nickname" value="">
    <p>email:<input type="text" name="Email" value=""></p>
    <p>password:<input type="password" name="Password" value=""></p>
    <p><input type="submit" value="Registrati"></p>
    </form></center>

    <?php
    if(isset($_POST)){
    $DBhost= "localhost";
    $DBuser= ".........."; //naturalmente in quello originale i dati sono inseriti 😄
    $DBpass= "..........";
    $DBname= "....................";

    $link= mysql_connect($DBhost,$DBuser,$DBpass,$DBname) or die("impossibile collegarsi al server");
    $link1= mysql_select_db($DBname,$link) or die("impossibile connettersi al database");
    $nickname= $_POST['Nickname'];
    $email= $_POST['Email'];
    $password= $_POST['Password'];
    @mysql_query($nickname,$email,$password) or die(mysql_error());
    $sql= "INSERT INTO lista_utenti(nickname, email, password) values ('$nickname', '$email', '$password')";

    mysql_query($sql) or die(mysql_error());

    @mysql_close($link);
    }

    ?>

    </body>
    </html>[/php]Ciao!!!


  • ModSenior

    Ciao, 🙂

    Il controllo restituisce sempre TRUE, anche accedendo direttamente alla pagina.
    La variabile essendo globale è sempre definita.
    Al massimo bisognerebbe fare un controllo che uno degli input sia definito.


  • User Attivo

    @Thedarkita said:

    Ciao, 🙂

    Il controllo restituisce sempre TRUE, anche accedendo direttamente alla pagina.

    Hai ragione:D
    Allora si risolve così:
    [PHP]
    <html>
    <head>
    <title>Registrazione</title>
    <link rel=stylesheet href="css/stylesito.css" type="text/css">
    </head>
    <body>
    <a href="index.php">Home Page</a><br>
    <a href="ilgioco.php">Il Gioco</a><br>
    <text class="linkdellapaginavisualizzata">Registrazione</text><br>
    <a href="">Forum</a><br>
    <center><form id="registrazione" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="registrazione">
    nickname:<input type="text" name="Nickname" value="">
    <p>email:<input type="text" name="Email" value=""></p>
    <p>password:<input type="password" name="Password" value=""></p>
    <p><input type="submit" name = "submit" value="Registrati"></p>
    </form></center>

    <?php
    if(isset($_POST['submit'])){
    $DBhost= "localhost";
    $DBuser= ".........."; //naturalmente in quello originale i dati sono inseriti 😄
    $DBpass= "..........";
    $DBname= "....................";

    $link= mysql_connect($DBhost,$DBuser,$DBpass,$DBname) or die("impossibile collegarsi al server");
    $link1= mysql_select_db($DBname,$link) or die("impossibile connettersi al database");
    $nickname= $_POST['Nickname'];
    $email= $_POST['Email'];
    $password= $_POST['Password'];
    @mysql_query($nickname,$email,$password) or die(mysql_error());
    $sql= "INSERT INTO lista_utenti(nickname, email, password) values ('$nickname', '$email', '$password')";

    mysql_query($sql) or die(mysql_error());

    @mysql_close($link);
    }

    ?>

    </body>
    </html>
    [/PHP]


  • ModSenior

    Voglio fare il pignolo 🙂
    Molto spesso IE, quando premi invio invece di cliccare sul pulsante submit, non invia la variabile globale POST del submit.
    Sarebbe meglio fare il controllo su uno degli input per evitare ciò.

    🙂

    Mi sono accorto di questo codice:
    [php]
    @mysql_query($nickname,$email,$password) or die(mysql_error());
    [/php]

    Che dovrebbe generare errore, non mi sembra abbia senso.
    Sconsiglio anche l'uso della @, che nasconde gli errori non consentendoti di sistemarlo in fase di testing.


  • User Attivo

    Ciao dark...
    Grazie della pignoleria!:D
    Usando firefox non mi sono mai accorto di questo difetto di IE...
    Quindi, il codice(pulito) dovrebbe essere così:

    [PHP]<html>
    <head>
    <title>Registrazione</title>
    <link rel=stylesheet href="css/stylesito.css" type="text/css">
    </head>
    <body>
    <a href="index.php">Home Page</a><br>
    <a href="ilgioco.php">Il Gioco</a><br>
    <text class="linkdellapaginavisualizzata">Registrazione</text><br>
    <a href="">Forum</a><br>
    <center><form id="registrazione" action="registrazione.php" method="post" name="registrazione">
    nickname:<input type="text" name="Nickname" value="">
    <p>email:<input type="text" name="Email" value=""></p>
    <p>password:<input type="password" name="Password" value=""></p>
    <p><input type="submit" value="Registrati"></p>
    </form></center>

    <?php
    if(isset($_POST['Nickname'])){
    $DBhost= "localhost";
    $DBuser= ".........."; //naturalmente in quello originale i dati sono inseriti 😄
    $DBpass= "..........";
    $DBname= "....................";

    $link= mysql_connect($DBhost,$DBuser,$DBpass,$DBname) or die("impossibile collegarsi al server");
    $link1= mysql_select_db($DBname,$link) or die("impossibile connettersi al database");
    $nickname= $_POST['Nickname'];
    $email= $_POST['Email'];
    $password= $_POST['Password'];

    $sql= "INSERT INTO lista_utenti(nickname, email, password) values ('$nickname', '$email', '$password')";

    mysql_query($sql) or die(mysql_error());

    @mysql_close($link);
    }

    ?>

    </body>
    </html>[/PHP]


  • User

    Ciao ragazzi, grazie di tutto..funziona alla perfezione!! 😉

    Ora è una registrazione molto semplice..cercherò di fare in modo di fargli riconoscere quando un campo è vuoto ecc...

    Alla prossima!! :fumato: