Formularz nie zapisuje do bazy

0

Witam,

Mam problem z formularzem PHP a mianowicie nie zapisuje mi danych do bazy. Jakieś pomysły gdzie robię błąd ??

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
 <link rel="stylesheet" type="text/css" href="style.css" />
</head>
    
<body>

<?php


require_once 'user.php';


if ( (isset($_POST["send"])) && ($_POST["send"] == 1)) {

    if ( isset($_Post["login"]) ){ 
		$login = mysql_real_escape_string(htmlspecialchars($_POST["login"])); 
		} else { 
		$login=''; 
}
    if ( isset($_Post["pass"]) ){ 
		$login = mysql_real_escape_string(htmlspecialchars($_POST["pass"])); 
		} else { 
		$pass=''; 
}
    if ( isset($_Post["pass_v"]) ){ 
		$login = mysql_real_escape_string(htmlspecialchars($_POST["pass_v"])); 
		} else { 
		$pass_v=''; 
}
    if ( isset($_Post["email"]) ){ 
		$login = mysql_real_escape_string(htmlspecialchars($_POST["email"])); 
		} else { 
		$email=''; 
}
    if ( isset($_Post["emai_v"]) ){ 
		$login = mysql_real_escape_string(htmlspecialchars($_POST["email_v"])); 
		} else { 
		$email_v=''; 
}


45.    $existsLogin = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM login WHERE login='$login' LIMIT 1"));
46.    $existsEmail = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM Email WHERE email='$email' LIMIT 1"));

    $errors = ''; 



    if (!$login || !$email || !$pass || !$pass_v || !$email_v ) $errors .= '- Musisz wypełnić wszystkie pola<br />';
    if ($existsLogin[0] >= 1) $errors .= '- Ten login jest zajęty<br />';
    if ($existsEmail[0] >= 1) $errors .= '- Ten e-mail jest już używany<br />';
    if ($email != $email_v) $errors .= '- E-maile się nie zgadzają<br />';
    if ($pass != $pass_v)  $errors .= '- Hasła się nie zgadzają<br />';

    if ($errors != '') {
        echo '<p class="error">Rejestracja nie powiodła się, popraw następujące błędy:<br />'.$errors.'</p>';
    }

    else {


        $pass = user::passSalter($pass);


		
		try {
				$pdow = new PDO('mysql:host=localhost;dbname=log_cdr', 'root', 'slawek132');
				$pdow->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
				$sqlw = "INSERT INTO login (login, pass, pass_v, email, email_v)
				VALUES ('['login']','['pass']','['pass_v']','['email']','['email_v']')";
				if ($pdow->query($sqlw)) {
				echo "<script type= 'text/javascript'>alert('Dane użytkownika zapisane poprawnie.');</script>";
				}
				else{
				echo "<script type= 'text/javascript'>alert('Niepoprawne zapisanie danych użytkownika!');</script>";
				}

				$pdow = null;
				}
				catch(PDOException $w)
				{
				echo $w->getMessage();
				}
		
        //mysql_query("INSERT INTO log_cdr (login, email, email_v, pass, pass_v) VALUES('$login','$email','$pass');") or die ('<p class="error">Wystąpił błąd w zapytaniu i nie udało się zarejestrować użytkownika.</p>');

        echo '<p class="success">'.$login.', zostałeś zarejestrowany.
        <br /><a href="login.php">Logowanie</a></p>';
    }
}
?>

<form method="post" action="">

 <label for="login">Wprowadź nazwę użytkownika</label>
 <input maxlength="32" type="text" name="pass_v" placeholder="Wprowadź nazwę użytkownika"/>

 <label for="pass">Wprowadź hasło</label>
 <input maxlength="32" type="password" name="pass_v" placeholder="Wprowadź hasło"/>
 
 <label for="pass_again">Wprowadź ponownie hasło</label>
 <input maxlength="32" type="password" name="pass_v" placeholder="Wprowadź ponownie hasło"/>

 <label for="email">Wprowadź E-mail</label>
 <input type="text" name="email" maxlength="50" id="email" placeholder="Wprowadź Email"/>

 <label for="email_again">Potwierdź Email</label>
 <input type="text" maxlength="255" name="email_v" id="email_again" placeholder="Wprowadź ponownie Email"/><br />

 
 <input type="hidden" name="send" value="1" />
 <input type="submit" value="Zarejestruj" />
 <input type="submit" value="Zmień hasło" />
 <a href="logout.php"><input type="button" value="Wyloguj" name="Wyloguj"/ ></a>
</form>

<?php
require 'footer.php'; 
?>

</body>
</head>

Komunikat błędu :

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\CDR\register.php on line 45
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\CDR\register.php on line 46

0

Wystarczy wygooglować. Odpowiedź jest w internetach. Dodam tylko, że nie możesz bezpośrednio do zapytania doczepiać zmiennej (tylko użyć bindowania parametrów PDO), bo jeżeli ktoś jako login poda Ci '';DROP TABLE login;-- to wykona się takie zapytanie:

SELECT COUNT(*) FROM login WHERE login='';DROP TABLE login;-- reszta zakomentowana
0

Używasz mysql_real_escape_string oraz mysql_query a nie masz nigdzie połączenia z bazą (mysql_connect).

0

Ok doszedłem już do etapu że zapisuje mi do bazy dane ale jest błąd że po każdym odświeżeniu zapisuje puste rekordy ...

 
<?php

require_once 'user.php';

try {
	$pdow = new PDO('mysql:host=localhost;dbname=log_cdr', 'root', 'slawek132');
	$pdow->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	$sqlw = "INSERT INTO login (login, pass, pass_v, email, email_v)
	VALUES ('".$_POST["login"]."','".$_POST["pass"]."','".$_POST["pass_v"]."','".$_POST["email"]."','".$_POST["email_v"]."')";
	

	$stmt=$pdow->prepare("select login, pass, pass_v, email, email_v from login where login=:login, pass=:pass, pass_v=:pass_v, email=:email, email_v=:email_v");
	$stmt->bindValue(":login",$_POST["login"]);
	$stmt->bindValue(":pass",$_POST["pass"]);
	$stmt->bindValue(":pass_v",$_POST["pass_v"]);
	$stmt->bindValue(":email",$_POST["email"]);
	$stmt->bindValue(":email_v",$_POST["email_v"]);
	$stmt->execute();

	
	
	if ($pdow->query($sqlw)) {
	echo "<script type= 'text/javascript'>alert('Dane użytkownika zapisane poprawnie.');</script>";
	}
	else{
	echo "<script type= 'text/javascript'>alert('Niepoprawne zapisanie danych użytkownika!');</script>";
	}

	$pdow = null;
	}
catch(PDOException $w)
{
echo $w->getMessage();

?>

0

Sprawdzaj czy dane z $_POST nie są puste.
I popraw inserta: http://php.net/manual/en/pdo.prepared-statements.php

1 użytkowników online, w tym zalogowanych: 0, gości: 1