I have a problem with registration using PHP. All were ok, but when I want to create security for my website then registration doesn't work... I really don't understand why my code doesn't work.
Here is connection:
<?php
session_start();
include 'config.php';
$db = new PDO(
"mysql:host=" .dbserver. ";dbname=" .dbname,dbuser,dbpass,
array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET utf8"
)
);
$ip = $_SERVER['REMOTE_ADDR'];
?>
<form action='' method='post'>
<table>
<tr><td>Jméno: </td><td><input type='text' name='username' required/></td></tr>
<tr><td>Heslo: </td><td><input type='password' name='password' required/></td></tr>
<tr><td>Heslo znovu: </td><td><input type='password' name='passwordrepeat' required/></td></tr>
<tr><td>Email: </td><td><input type='email' name='email' required/></td></tr>
<tr><td><input type='submit' name='registrovat' value='Registrovat' required/></td><td></td></tr>
</table>
</form>
<?php
if (isset($_POST['registrovat']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$passwordre = $_POST['passwordrepeat'];
$email = $_POST['email'];
if ($password == $passwordre)
{
if ($username && $email)
{
$select = $db->prepare("SELECT * FROM `users` WHERE username=':username'");
$result->execute(array(":username" => $username));
$result = $select->fetchAll();
foreach ($result as $data)
{
if ($data['username'] == $username)
{
echo "<p style='color: red;'>Uživatel již existuje!</p>";
break;
} else {
$password = md5(sha1($password));
$register = "INSERT INTO users (id, username, password, ip, email, color, isadmin) VALUES ('', ':username', ':password', '$ip', ':email', '#000000', '0')";
$re = $db->prepare($register);
$re->execute(array(':username' => $username, ':password' => $password, ':email' => $email));
echo "Registrace proběhla úspěšně.";
$_SESSION['username'] = $username;
header('Location: JakubStanek.php');
}
}
}
} else {
echo "Hesla se neshodují!";
}
}
?>
error
Notice: Undefined variable: result in /var/www/html/staneja14/db/index.php on line 40 Fatal error: Call to a member function execute() on a non-object in /var/www/html/staneja14/db/index.php on line 40