PHP: errore connessione database

Matilde1

Nuovo Utente
31 Ago 2017
4
0
1
29
Buonasera a tutti.
Ho un form per inserire le credenziali di un utente che vuole registrarsi su un sito.

PHP:
<?php
session_start();
?>
<!doctype html>
<html>
<head>
<script type="text/javascript" src="new.js">
</script>
 <?php require("head.html") ?>
</head>
<body>
<div id="wrapper">
<div id="headerwrap">
 <div id="header">
<?php include_once ("header.php"); ?>
</div>
</div>
<div id="menuwrap">
<div id="menu">
<?php include_once("menu.php"); ?>
</div>
</div>

<div id="contentwrap">
<div id="content">
<form name="f" method="post" action="creato.php" onSubmit="verifica_form()">
<p>Inserisci il nickname che preferisci: <input type="text" name="nickname"> </p>
<p>Inserisci la password: <input type="password" name="psw1"></p>
<p>Reinserisci la password: <input type="password" name="psw2"></p>
<p>Inserisci l'importo che desideri depositare sul borsellino: <input type="text" name="borsellino"></p>

<input type="submit" name="primobottone" value="CREA NUOVO UTENTE">
<input type="reset" name="secondobottone" value="CANCELLA">
</div>
</div>
</form>
<div id="footerwrap">
<div id="footer">
<?php include_once("footer.php"); ?>
</div>
</div>
</div>
</body>
</html>
Collegato ad un file .js

Codice:
function verifica_form(){
    
    nick=document.f.nickname.value;
    pswd1=document.f.psw1.value;
    pswd2=document.f.psw2.value;
    
    
    var re=/^([a-zA-Z]|\$)([a-zA-Z]|[0-9]|\$){2,7}$/;
    
    var re0=/\d/;
    
    var re1=/^\d{4}$/;
    
    if(!re.test(nick)&&!re0.test(nick)){
        window.alert("Il formato del nickname è sbagliato");
    }
    if(!re1.test(pswd1)&&!re1.test(pswd2)){
        window.alert("Il formato della password è sbagliato");
    }
    
    
}

Questo dovrebbe inviare i dati alla pagina creato.php solo nel caso in cui il formato dei dati inseriti sia corretto. Altrimenti deve rimanere nella stessa pagina e segnalare l'errore.
Qualcuno ha idee sul come fare??

Il mio codice per la pagina creato.php è:
PHP:
<?php
session_start();
?>
<!DOCTYPE HTML>
<html>
  <head>
     <?php require("head.html") ?>
   </head>
   <body>
<div id="wrapper">

<div id="headerwrap">
 <div id="header">
 <?php include_once ("header.php"); ?>
</div>
</div>
<div id="menuwrap">
<div id="menu">
<?php include_once("menu.php"); ?>
</div>
</div>

<div id="contentwrap">
<div id="content">

<?php

$nickname=trim($_POST['nickname']);
$password=trim($_POST['psw1']);
if($_POST['borsellino']==""||$_POST['borsellino']=="0"){
    $soldi=100;
}else{
$soldi=trim($_POST['borsellino']);
}
$con=mysqli_connect("localhost","uPower","SuperPippo!!!","magazzino");
if(mysqli_connect_errno()){
    echo "<p>Errore di connessione al DBMS:".mysqli_connect_error()."</p>\n";
}else {
    
    
    $query= "INSERT INTO utenti(nicK,pass,soldi)VALUES('$nickname','$password','$soldi')";
    $result=mysqli_query($con,$query);
    if($result){
        echo ("La registrazione è avvenuta con successo!");
    }else{
        echo "inserimento non eseguito";
    }
}
?>
</div>
</div>

<div id="footerwrap">
<div id="footer">
<?php include_once("footer.php");?>
</div>
</div>
</div>
</body>   
</html>

Grazie mille a chiunque mi risponda.
 
Ultima modifica:

Matilde1

Nuovo Utente
31 Ago 2017
4
0
1
29
Scusa ma non mi è chiaro cosa dovrei fare. :)
Come dovrei cambiare il mio codice?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto farei gli opportuni controlli lato server (i controlli con js sono belli, ma quelli lato server più sicuri)
quimdi esempio
1) verificare la correttezza dei dati inseriti
nick che non sia vuoto e es. composto solo da lettere e/o con numeri
pass che non sia vuota e comunque prima dell'insert è bene codificarla come minimo con sha1
che borsellino sia un numero intero o float
2) dovresti controllare che nick e/o pass non siano duplicati, altrimenti ti puoi ritrovare due utenti diversi con stesso user e pass
ti schematizzo
PHP:
<?php
//....
$nickname=trim($_POST['nickname']);
$password=trim($_POST['psw1']);
if($_POST['borsellino']==""||$_POST['borsellino']=="0"){
    $soldi=100;
}else{
$soldi=trim($_POST['borsellino']);
}
//fai i controlli
if($controllo=='errore'){
    //in caso di errore
    header('Location: pagina_a_cui_vuoi_rimandare.php');
    exit();
}else{
    //tutto il resto che devi fare se i dati sono corretti
}
?>

dimenticavo, dato che ti ho indicato per reindirizzare header la parte html ti conviene fare prima i controlli e mettere la parte html nell'else, header deve venire prima di qualsiasi output
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ho guardato anch'io il codice,
prima di tutto 2 modifiche necessarie per il funzionamento,
HTML:
function verifica_form()
{
    var verOK=true;

    nick=document.f.nickname.value;
    pswd1=document.f.psw1.value;
    pswd2=document.f.psw2.value;

    var re=/^([a-zA-Z]|\$)([a-zA-Z]|[0-9]|\$){2,7}$/;

    var re0=/\d/;

    var re1=/^\d{4}$/;

    if(!re.test(nick)&&!re0.test(nick)){
        window.alert("Il formato del nickname è sbagliato");
        verOK=false;
    }
    if(!re1.test(pswd1)&&!re1.test(pswd2)){
        window.alert("Il formato della password è sbagliato");
        verOK=false;
    }
    return verOK;
}
la funzione deve restituire vero o falso in funzione dei controlli
da usare con il form (vedi onsubmit),
nel contempo due div rovesciate rispetto alla loro "apertura"
HTML:
    <div id="contentwrap">
        <div id="content">
            <form name="f" method="post" action="creato.php" onSubmit="return verifica_form()">
                <p>Inserisci il nickname che preferisci: <input type="text" name="nickname"> </p>
                <p>Inserisci la password: <input type="password" name="psw1"></p>
                <p>Reinserisci la password: <input type="password" name="psw2"></p>
                <p>Inserisci l'importo che desideri depositare sul borsellino: <input type="text" name="borsellino"></p>
                <input type="submit" name="primobottone" value="CREA NUOVO UTENTE">
                <input type="reset" name="secondobottone" value="CANCELLA">
            </form>
        </div>
    </div>
    <div id="footerwrap">
 

Matilde1

Nuovo Utente
31 Ago 2017
4
0
1
29
L'errore era che php non mi leggeva la funzione in formato .js
Facendo la funzione nel tag <script> nello stessa pagina del form ho risolto.
Grazie a tutti!
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Facendo la funzione nel tag <script> nello stessa pagina del form ho risolto.
Grazie a tutti!
prego, non c'è di che,

anch'io avevo messo js nello stesso script del form, per non dover aprire troppi files per le modifiche
ma senza onSubmit="return verifica_form()" e relativo return dal js non ha funzionato

quando rendi nota una soluzione, per cortesia, che sia giusta, altrimenti evita
 

Buzz5

Nuovo Utente
29 Set 2017
7
0
1
Ciao a tutti mi collego a questa discussione perchè ho un problema con la connessione alla tabella di un mio db...mi spiego meglio...

Ho creato un form di raccolta dati con questo codice

HTML:
<div id="form">
        <form style="margin-left: 25px; margin-top: 290px;" action="../grazie.php">
            <fieldset>
                <div class="form-group">
                    <label for="telefono">Telefono</label>
                        <input id="telefono" class="form-control" type="tel" placeholder="Inserisci il telefono..." />
                </div>
                <div class="form-group">
                    <label for="telefono">Email</label>
                        <input id="telefono" class="form-control" type="text" placeholder="Inserisci la tua mail..." />
                </div>
                <div class="checkbox">
                    <label>
                    <input type="checkbox" /> Normativa privacy
                    </label>
                </div>
                    <button class="btn btn-default" type="submit">Invia</button></fieldset>
        </form>
</div>

Ora voglio che questi dati raccolti vengano inseriti in una tabella del mio db e quindi ho creato uno script per farlo...questo è il codice della pagina grazie.php...

PHP:
<?php

$telefono = $_POST ['telefono'];
$email = $_POST ['email'];

$db_host = 'xx.xx.xxx.xx';
$db_user = 'Sqlxxxxxxx';
$db_pass = 'xxxxxxxxx';
$db_name = 'Sqlxxxxxxx_x';

$cn = new mysqli($db_host, $db_user, $db_pass, $db_name);


if ($cn->connect_error) {
    echo "Connessione fallita: ". $cn->connect_error . ".";
exit();}
    

$sql = "INSERT INTO nome_tabella (email, telefono) VALUES ('$telefono','$email')";

if (!$cn->query($sql)) {
  echo "Errore della query: " . $cn->error . ".";
}

else{
  echo "Registrazione effettuata correttamente.";
}
$cn->close();
?>

La tabella nome_tabella l'ho creata preventivamente tramite mysqladmin di aruba.

Quando invio i dati attraverso la form visualizzo nella pagina grazie.php questo errore:

Errore della query: Table 'nome_db.nome_tabella' doesn't exist.

cosa ho sbagliato?
sapete aiutarmi?
Vi ringrazio anticipatamente e mi scuso per gli errori ma sono un neofita :)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
verifica di aver creato la tabella nel db
verifica che il nome della tabella sia lo stesso che usi nella query, se la tabella si chaiama pinco nella query devi mettere INSERT INTO pinco(ecc...

dimenticavo, generalmente aruba mette a disposizione 5 db, verifica cdi aver creato la tabella nel db con nome che hai scritto in $db_name

ultimo, ma non meno importante: abbandona le vecchie funzioni php mysql_xy deprecate e passa alle nuove mysqli_xy

p.s.
non conviene accodarsi a vecchie discussioni, creane una tua
 

Buzz5

Nuovo Utente
29 Set 2017
7
0
1
Ciao Borgo scusami ma credevo fosse meglio ripescare qualcosa di simile per evitare il sovraffollamento di topic...prossima volta che posto qualcosa apro una discussione nuova....

Visto che ci siamo ti ringrazio per lo spunto perchè effettivamente avevo collegato lo script ad un altro db di aruba...

Detto questo colgo l'occasione per chiederti perchè ora registro qualcosa nel db ma i campi sono vuoti, c'è un problema con le varibili o forse nell'html che ho postato ho non ho inserito l'attributo name nel tag <input>?

Grazie in anticipo!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
si scusa non avevo guardato il form, mi ero limitato alla connessione.
si negli input ci vuole il name, altrimenti il relativo $_POST non sa cosa leggere, anzi rimane vuoto,
poi attento vedo che hai due input uno telefono e uno email, quindi name='telefono' e name='email' anche ci chek devono avere il name
poi vedo che l'action è ad un'altra pagina e quindi ok, ma farai tutto nella stessa pagina anche il pulsante di submit deve avere un name
 

Buzz5

Nuovo Utente
29 Set 2017
7
0
1
Si ho corretto gli errori ed adesso registro correttamente il dato. Grazie :)

Ora per inserire un controllo sui campi lo posso fare solo con uno script in pagina dove c'è la form?Utilizzo wordpress ma la form l'ho creata scrivendo il codice nel editor del CMS...non vorrei istallare un plugin ma farlo manualmente io....come posso fare?
Tieni conto che la action richiama una pagina dove è inserito lo script per la registrazione dei dati...si può fare li?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
definendo il type dell'input hai un certo controllo. es
HTML:
<input type="email" placeholder="Inserisci la tua mail..."/>
se non scrivi un indirizzo sintatticamente valido non ti consente di proseguire, analogo per altri type tel, number...
però per un controllo più sicuro (non al 100% in rete non esiste) è meglio fare i controlli lato server, es di controllo dell'email
PHP:
//....
$email=$_POST['email'];
$email=filter_var($email, FILTER_SANITIZE_EMAIL);//pulisce
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
    //indirizzo non sintatticamente valido
    //riorno automatico al form
    exit();
}
//....
gli altri $_POST li puoi prima pulire (es. trim e/o strip_tags) e poi verificare con preg_match

però una cosa dici che usi wp, che io non uso, so che non è semplice modificare le pagine generate da wp, quindi ti converrebbe usare i vari plug messi a disposizione
 
Discussioni simili
Autore Titolo Forum Risposte Data
M PHP: errore connessione a MySQL PHP 5
S Errore PHP - Notice: Undefined index ... PHP 14
E Errore di lettura php in html PHP 8
A php metodo post jquery non da mai errore jQuery 4
M errore dopo passaggio Php 7.2 PHP 6
L form multipla php sql,errore in inserimento MySQL 0
M Errore JavaScript per php [objeto HTMLParagraphElement] PHP 0
F [PHP]Errore registrazione PHP 8
MarcoGrazia [PHP] Download di file con errore all'interno. PHP 1
M [PHP] WS-Security errore PHP 0
M [PHP] Errore di percorso, file not found PHP 3
ANDREA20 errore php PHP 1
N [PHP] ERRORE: SyntaxError: Unexpected token N in JSON at position 1 PHP 0
Tommy03 Errore invio email con PHP PHP 1
Shyson [PHP] Errore inspiegabile PHP 1
A index.php errore PHP 3
M Errore pagina php 'Cannot detect primary key' PHP 8
Tommy03 [PHP] Errore query selezione avg PHP 0
L [PHP] Errore 410 Gone... PHP 1
A [PHP] errore 404 e invio mai path pagina con link interrotto PHP 2
A [PHP] Errore select dati da db PHP 0
C [RISOLTO][PHP] Errore di sintassi PHP 8
A [PHP] ERRORE QUANDO CAMBIO SLUG NEL CMS e REWRITE PHP 6
Y [PHP] Errore di login dopo aver inserito Codice AdSense PHP 0
C [PHP] Errore "Fatal error: Call to undefined function getTotalUsers()" PHP 2
C [PHP] non trovo l'errore? PHP 3
S [PHP] errore funzione sleep PHP 5
L [PHP] Errore UPDATE su tabella DB PHP 22
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
L [PHP] upload con errore PHP 2
T [PHP] errore unexpected T_LNUMBER che non so interpretare PHP 6
F Form mail php errore invio PHP 5
E [PHP] Errore Class 'JText' not found CMS (Content Management System) 2
fabry1986 [PHP] Errore nome utente scompare dopo logout PHP 14
A Errore PHP: Call to a member function on null PHP 5
C PHP errore Fatal Error: Allowed Memory Size of ... Bytes Exhausted PHP 7
C [PHP] PDO prepared statement - select query errore PHP 7
ANDREA20 [PHP] Errore $this->db_connection = new PDO PHP 0
S [PHP] Errore visualizzazione pagina web PHP 1
M [PHP] errore in semplie form inserimento dati PHP 7
A [RISOLTO]Errore caricamento file php PHP 21
ANDREA20 [PHP] Errore riga PHP 0
L [PHP] JTable Errore PHP 0
V [PHP] Non riesco a trovare errore PHP 25
M [PHP] Errore nell' assegnazione della variabile $this->id su una funzione PHP 1
Fuego2806 [PHP] Errore 500 Internal Server Error - sito Joomla! Joomla 10
M [PHP] Errore in ciclo foreach PHP 1
asevenx [PHP] Errore tasto submit per invio dati non funziona PHP 5
enzonero Errore di analisi php line 1 PHP 11
localhost.nicola Errore Apache su installazione php\ext - Unable to load dynamic library PHP 0

Discussioni simili