PDA

View Full Version : [AJAX/PHP]Recuperare variabili da PHP con AJAX


Lord_Brisingr
13-12-2017, 11:58
Salve a tutti, ho un problema nel stampare il seguente alert:

alert("Grazie per esserti registrato. Clicca OK per tornare alla home");
window.location = "index.php";


Lo scopo è quello di segnalare che la registrazione sia andata a buon fine, evitando che la pagina si ricarichi ed utilizzando, così, ajax. Solo che, una volta controllato, attraverso una query, l'esito della registrazione, la variabile $alldone non viene impostata così come dovrebbe essere, per permettere, nel metodo success di ajax, di stampare l'alert. Ciò non avviene, dal momento che la variabile non viene modificata. Sapreste aiutarmi? Grazie mille.

<?php
$errore = "";
$alldone = false;
session_start();

require_once ('class.manifold.php');
$class = new manifold();
$html = $class->title();
echo $html;
$class->menu();
include("conn.php");
?>
<html>
<head>

<link rel="stylesheet" href="css/style.css" type="text/css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#input_form").submit(function () {
var name = $("#nick").val();
var email = $("#email").val();
var password = $("#password").val();
$.ajax({
url: '<?php $_SERVER['PHP_SELF']; ?>',
type: "POST",
data: "password=" + password + "&nick=" + name + "&email=" + email,
success: function () {
<?php

if($alldone == true){
?>
alert("Grazie per esserti registrato. Clicca OK per tornare alla home");
window.location = "index.php";
<?php
}
?>
}
});

return false;
});

});
</script>
</head>

<body>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {

$nick = $_POST["nick"];
$pass = $_POST["password"];
$email = $_POST["email"];


$sql = "SELECT nick FROM moderatore WHERE nick = '$nick'";
echo $sql;
$result = $conn->query($sql);
if ($result->num_rows == 0) {
//criptazione pass


$pass = md5($pass);
$sql = "INSERT INTO moderatore (email, nick, password) VALUES ('$email', '$nick', '$pass')";
$alldone = true;
echo $sql;
$result = $conn->query($sql);
if (@$result->num_rows == 0) {
$alldone = true;
}
} else {

$errore = "nick già esistente";
echo $errore;
}
}
?>



<div align ="center">
<form id = "input_form" action="?">
<fieldset style = "margin-top: 10%; width:50%">

<h4>Inserisci credenziali</h4><br/>
<span style = "padding-right: 5%">email:</span> <input type ="email" id = "email" /><br/>
<span style = "padding-right: 2%">Nickname:</span> <input type ="text" id = "nick"/><?php echo $errore ?><br/>
<span style = "padding-right: 2.5%">Password:</span> <input type ="password" id = "password"/><br/>

<button>invia</button><br />

<div id="result"></div>

</fieldset>
</form>
</div>

</body>
</html>

Mursey
13-12-2017, 12:42
Se la richiesta ajax la stai facendo sulla medesima pagina la variabile $alldone non è la stessa.

Lord_Brisingr
13-12-2017, 13:17
Se la richiesta ajax la stai facendo sulla medesima pagina la variabile $alldone non è la stessa.

sapresti dirmi come fare per avere la stessa variabile, evitando di creare file esterni?

Zeppe79
13-12-2017, 15:59
nella parte javascript modifica così la funzione success

success: function (response) {
if(response == true)
{
alert('tutto ok')
}
}

nella parte php

if (@$result->num_rows == 0) {
return true;
}

e invece di
$errore = "nick già esistente";
echo $errore;

metti
return false;


____________________

però se fossi in te creerei un file js separato e due file php, uno per la form e uno per la richiesta ajax

Nota: non so se sia un esercizio o simile, però dovresti pensare ad una validazione degli input, ad una loro pulizia (evitare sql injection etc), codificare la password con altri algoritmi, etc

ciao

Lord_Brisingr
14-12-2017, 16:13
Grazie mille!