Софтуерно Инженерство
Loading...
+ Нов въпрос
petkowwwsa avatar petkowwwsa 4 Точки

[PHP] register form

Здравейте на всички и Весела Коледа!

Искам да Ви попитам едно въпросче и ще съм много благодарен на всеки, който отдели от времето си да помогне.

Бих казал, че съм начинаещ с PHP и реших да си направя онлайн магазин, като в момента мъча LOGIN и REGISTER формите.
Опитвам се да използвам и база данни, където да съхранявам информация за регистрираните потребители.

Случаят ми е следния:
Имам 1 файл functions.php и в него се опитвам да сложа всички функци, които ще използвам по другите страници.
Създал съм функция register() и нейният код е:

function register() {
	global $dbConnection;

	if ($_SERVER['REQUEST_METHOD'] == 'POST' and isset($_POST['regBtn'])) {
		$query = "INSERT INTO `registered_users` (`username`,`email`,`password`) VALUES (:username,:email,:password)";
		$stmt = $dbConnection->prepare($query);

		$password = hash('sha256', $_POST['password']);
		$username = $_POST['username'];

		$stmt->bindParam(':username', $username);
		$stmt->bindParam(':email', $_POST['email']);
		$stmt->bindParam(':password', $password);

		if (count($username) >= 3) {
			$stmt->execute();
		}
	}
}

След това имам файла - register.php, в който си държа html Кода на регистър формата:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>

<div  class="admin-panel">
  <h1 class="header"> Admin Panel - Register</h1>
  <div class="imgcontainer">
    <img src="../assets/img/avatar.png" alt="Avatar" class="avatar">
  </div>

	<?php if(!empty($message)): ?>
		<p><?= $message; ?></p>
	<?php endif; ?>

  <div class="container">
  <div class="texts"><span class="first-text">Register</span> <div>or <a href="login.php" class="second-text">login here</a></div></div>
    <form id="reg-form" method="POST">
		<input type="text" placeholder="USERNAME" name="username" required="required" />
		<input type="email" placeholder="EMAIL" name="email" required="required" />
    	<input type="password" placeholder="PASSWORD" name="password" required="required" />
    	<input type="submit" name="regBtn" value="Register" />
	</form>
	</div>
</div>
</body>
</html>

В горе посоченият файл съм записал следния код, но не се получава да ми запази данните в базата данни:

<?php
	require '../database.php';
	require '../functions.php';

	$message = '';

	if (register()) {
		$message = 'Successfully created a new user';
	}

	if (isset($_POST['username']) && count($_POST['username']) < 3 ) {
		$message = 'Username have to be atleast 3 symbols';
	}


?>

Можете ли да ми кажете дали функцията е правилна и ако не, какво трябва да се подобри и как трябва да подхождам с функциите и също така какво трябва да се разпише във файла register.php

Тагове:
0
PHP Web Development Basics 26/12/2016 16:07:05
krasimir.i.petrov avatar krasimir.i.petrov 8 Точки

Я пробвай така:

function register() {
	global $dbConnection;

	if ($_SERVER['REQUEST_METHOD'] == 'POST' and isset($_POST['regBtn'])) {
		$query = "INSERT INTO `registered_users` (`username`,`email`,`password`) VALUES (?,?,?)";
		$stmt = $dbConnection->prepare($query);

		$password = hash('sha256', $_POST['password']);
		$username = $_POST['username'];
                $email = $_POST['email'];
             


		

		if (count($username) >= 3) {
			 $stmt->execute(
            [
                $username,
                $email,
                $password
            ]
        );
		}
	}
}

 

0
26/12/2016 17:00:21
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки

count($username); вероятно винаги връща 1. count() се ползва за масиви. Може би трябва да потърсиш коя функция е за стрингове.

P.S.: По-важното обаче е да се научиш да дебъгваш.

 

1