Centro RPG Maker

Centro de Software => Informática e Tecnologia => Tópico iniciado por: NumPaD online 03/02/2015 às 04:55

Título: Registro em PHP
Enviado por: NumPaD online 03/02/2015 às 04:55
Fala galera.

Eu tava acompanhando umas videoaulas e fazendo um sistema de registro para um jogo.
O problema é que o sistema demonstrado não funcionou aqui, pois não grava nada do banco de dados. Ou melhor, nem conecta...

Um usuário postou outro código, e esse funcionou, mas não tem uma função MUITO importante: Definir um N° de caracteres mínimos para usuário e senha. Pois no código funcional dá pra concluir o registro sem ao menos inserir uma senha.

Código da aula. Não funciona:
<?php
// Variables
$sqlHost '127.0.0.1';
$sqlUser 'root';
$sqlPass '';
$sqlDatabase 'mmorpg';

// Make connection
$connection = new PDO('mysql:host='.$sqlHost.';dbname='.$sqlDatabase.';charset=utf8'$sqlUser$sqlPass);
$connection -> setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);

//
$username null;
$password null;

// if
if (isset($_GET['user']))
{
$username $_GET['user'];
}

// if
if (isset($_GET['pass']))
{
$password $_GET['pass'];
}

if((isset($username)) && (isset($password)))
{
// TODO SQL
$salt genSalt(40);
$passHash md5(md5($salt) . md5($password));

$statement $connection -> prepare("INSERT INTO `mmorpg`.`accounts` (`username`, `password`, `salt`) VALUES (:user, :pass, :salt);");
$statement->bindParam(":user"$username);
$statement->bindParam(":pass"$passHash);
$statement->bindParam(":salt"$salt);
if($statement->execute())
{
echo "Thank you for registration, " $username;
}
else
{
echo "Sorry, your registration failed.";
}
}
else
{
// DISPLAY
echo '<input type="text" id="user" placeholder="username"/>
<input type="text" id="pass" placeholder="password"/>
<button id="button">Register</button>

<script>
var button = document.getElementById("button");
button.addEventListener("click", function()
{
var user = document.getElementById("user");
var pass = document.getElementById("pass");
if(user.value.length< 3 || pass.value.length < 3)
{
alert("Please enter a valid username/password");
}
else
{
window.location = "index.php?user="+user.value+"&pass="+pass.value;
}
});
</script>
'
;
}
        
// Generate Salt
function genSalt($length)
 {
$variables "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789";
$charLength strlen($variables);
$returned "";
for($i 0$i $length$i++)
{
$returned .=$variables[rand(0, ($charLength -1))];
}
return $returned;
}
?>


Código do usuário, funcional:
<?php
// Host login
$sqlHost "localhost";
$sqlUser "root";
$sqlPass "";
$sqlDatabase "mmorpg";
// Connect
$connection mysql_connect($sqlHost$sqlUser$sqlPass) or die("Database connection failed.");
mysql_select_db($sqlDatabase) or die("Could not connect to Database.");

// Set values
$username null;
$password null;

// POST values
if(isset($_POST['User'])){
$username $_POST['User'];
}
if(isset($_POST['Password'])){
$password $_POST['Password'];
}
    
if(isset($username) && isset($password))
{
// SQL
$salt genSalt(40);
$passhash md5(md5($salt) . md5($password));
$salt genSalt(40);
// Record values in database
$query mysql_query("INSERT INTO accounts (username, password, salt) VALUES ('"$username ."', '"$passhash"', '"$salt."')") or die("Sorry, your registration failed.");
// Show Success
if($query == true)
{
 echo "Thank you for registration, $username";
}}
else
{
// Display
echo'<form name="f1" action="#" method="POST">
<table border="0">
<tr>
<td>Login: </td>
<td><input type="text" name="User"></td>
</tr>
<tr>
<td>Password: </td>
<td><input type="password" name="Password"></td>
</tr>
<tr>
<td> &nbsp; </td>
<td><input type="submit" value="Register"></td>
</tr>
</table>
</form>'
;}

// Generate Salt
function genSalt($length)
 {
$variables "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789";
$charLength strlen($variables);
$returned "";
for($i 0$i $length$i++)
{
$returned .=$variables[rand(0, ($charLength -1))];
}
return $returned;
}
// Close connection
mysql_close($connection);
?>

Eu não entendo nada de linguagem web. Alguém saberia por uma restrição minima de caracteres no segundo código?
Ou achar o erro do primeiro?
Título: Re: Registro em PHP
Enviado por: Fábio Pichler online 03/02/2015 às 08:16
Vê se funciona:
<?php
// Host login
$sqlHost "localhost";
$sqlUser "root";
$sqlPass "";
$sqlDatabase "mmorpg";
// Connect
$connection mysql_connect($sqlHost$sqlUser$sqlPass) or die("Database connection failed.");
mysql_select_db($sqlDatabase) or die("Could not connect to Database.");

// Set values
$username "";
$password "";

// POST values
if(isset($_POST['User'])){
  $username $_POST['User'];
}
if(isset($_POST['Password'])){
  $password $_POST['Password'];
}
    
if(strlen($username) > && strlen($password) > 4)
{
// SQL
$salt genSalt(40);
$passhash md5(md5($salt) . md5($password));
$salt genSalt(40);
// Record values in database
$query mysql_query("INSERT INTO accounts (username, password, salt) VALUES ('"$username ."', '"$passhash"', '"$salt."')") or die("Sorry, your registration failed.");
// Show Success
if($query == true)
{
 echo "Thank you for registration, $username";
}}
else
{
// Display
echo'<form name="f1" action="#" method="POST">
<table border="0">
<tr>
<td>Login: </td>
<td><input type="text" name="User"></td>
</tr>
<tr>
<td>Password: </td>
<td><input type="password" name="Password"></td>
</tr>
<tr>
<td> &nbsp; </td>
<td><input type="submit" value="Register"></td>
</tr>
</table>
</form>'
;}

// Generate Salt
function genSalt($length)
 {
$variables "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789";
$charLength strlen($variables);
$returned "";
for($i 0$i $length$i++)
{
$returned .=$variables[rand(0, ($charLength -1))];
}
return $returned;
}
// Close connection
mysql_close($connection);
?>


Na linha:
if(strlen($username) > 4 && strlen($password) > 4)
Eu defini sendo que, usuário e senha tem que ser maior que 4, se quiser outro valor, só alterar.
Título: Re: Registro em PHP
Enviado por: NumPaD online 03/02/2015 às 13:14
Opa! Valeu Fábio. Funcionou sim. Grato!