integrazione php e javascript

il programma deve permettere l'invio di articoli che saranno pubblicati sul sito; per ciascun articolo deve essere specificata la mail obbligatoria e il nick dell'autore, ma non ci deve essere un sistema di registrazione dell'autore.

Si è quindi pensato di creare comunque una tabella autori e nel momento in cui si crea un articolo è necessario controllare che, nel caso in cui l'autore sia già presente, usi lo stesso nick.

ho quindi creato la funzione javascript:

[color=red]var nome = document.getElementById("nome").value;
var mail = document.getElementById("mail").value;
xmlHttp.open('GET', 'request.php?mail='+mail+'&nome='+nome, true);
xmlHttp.onreadystatechange = stateChanged;
var risp=xmlHttp.responseText;
xmlHttp.send(null);
if (risp=='true')
{
alert("Utente già presente: non c'è corrispondenza tra e-mail e nick");
return false;
}[/color]

il file request.php è il seguente:

[color=blue]<?php
include ("funzioni.php");
$db=connessione();
$mail=$_GET['mail'];
$nome=$_GET['nome'];
$sql="SELECT * FROM autori WHERE mail='$mail'";
$s = $db->query($sql)or die("Errore ".$db->error);
$nRighe = $s->num_rows;
if ($nRighe != 0)
{
  $sql="SELECT * from autori WHERE mail='$mail' and nome='$nome'";
  $t = $db->query($sql)or die("Errore ".$db->error);
  $n = $t->num_rows;
  if ($n == 0)
  {
    $out='true';
  }
}
echo $out;
?> [/color]

Il programma però non funziona. Qualcuno sa dirmi dove sbaglio?

Grazie

Michela

inviato 8 anni fa
michela85cancro
X 0 X

Io vedo 2 errori abbastanza grossi:

1) il javascript non va usato come parte integrante di un sistema, ma solo come accessorio. Se un client non supporta js, tutto deve funzionare ugualmente (usabilità)

2) la regola d'oro: filter input, escape output. Le tue query sono esposte ad attacchi di tipo sql injection.

risposto 8 anni fa
Massimiliano Arione
X 0 X

Queste sono le prove che sto facendo in locale, quindi il controllo sull'sql non c'è ancora.

Per quanto riguarda l'uso di javascript mi è stato richiesto esplicitamente dal cliente di bloccare l'invio del form con un'istruzione javascript: se non lo avesse fatto io avrei usato semplicemente una pagina php.

Mi puoi aiutare a risolvere il mio problema?

Grazie

risposto 8 anni fa
michela85cancro
X 0 X
Mi puoi aiutare a risolvere il mio problema?

Certamente.

Cos'è esattamente che non funziona?

risposto 8 anni fa
Massimiliano Arione
X 0 X

Il file request.php deve restituire true se la corrispondenza è esatta, false in caso contrario. Questo output deve essere recepito dal codice JS che, nel caso di false (nel codice riportato c'è true, ma in realtà è false) deve mandarmi il messaggio di errore e bloccarmi l'esecuzione.

Non so proprio più dove sbattere la testa... :'(

risposto 8 anni fa
michela85cancro
X 0 X

Ma riesci a verificare se lo script php viene interrogato? Puoi controllare nei log di apache o più semplicemente usando Firebug (un'estensione di Firefox)

risposto 8 anni fa
Massimiliano Arione
X 0 X

Scusa se non mi sono fatta più sentire, ma ho avuto gravi problemi in famiglia e sono dovuta partire :'(.

Comunque sono riuscita a convincere il cliente a fare il controllo in php...Quindi il mio problema si è risolto...

Grazie del tuo aiuto :bye:

risposto 8 anni fa
michela85cancro
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda