<?php session_start(); $env = parse_ini_file('.env'); $host = $env['DB_HOST']; $user = $env['DB_USER']; $pass = $env['DB_PASS']; $db = $env['DB_NAME']; $con = mysqli_connect($host, $user, $pass, $db); if(mysqli_connect_errno()) { echo "Failed to connect to database: " . mysqli_connect_errno(); } // Variables declaration to prevent errors $fname = ""; $lname = ""; $email = ""; $email_conf = ""; $pass = ""; $pass_conf = ""; $date = ""; // Registration Date $errors = array(); // Used to hold any errors. if(isset($_POST['register_but'])) { // Variable Assignments // *** strip_tags() is used to prevent html injection. *** // $fname = strip_tags($_POST['reg_fname']); //Sets the value from the forum. $fname = str_replace(' ', '', $fname); // Removes any spaces. $fname = ucfirst(strtolower($fname)); // Capitalizes first letter, lowercases the rest. $_SESSION['reg_fname'] = $fname; // Stores values into session variable. $lname = strip_tags($_POST['reg_lname']); $lname = str_replace(' ', '', $lname); $lname = ucfirst(strtolower($lname)); $_SESSION['reg_lname'] = $lname; $email = strip_tags($_POST['reg_email']); $email = str_replace(' ', '', $email); $email = strtolower($email); $_SESSION['reg_email'] = $email; $email_conf = strip_tags($_POST['reg_email_conf']); $email_conf = str_replace(' ', '', $email_conf); $email_conf = strtolower($email_conf); $_SESSION['reg_email_conf'] = $email_conf; $pass = strip_tags($_POST['reg_pass']); $pass = str_replace(' ', '', $pass); $pass_conf = strip_tags($_POST['reg_pass_conf']); $pass_conf = str_replace(' ', '', $pass_conf); $date = date("Y-m-d"); // Sets the registration date. if ($email == $email_conf) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) { $email = filter_var($email, FILTER_VALIDATE_EMAIL); $e_check = mysqli_query($con, "SELECT email FROM users WHERE email='$email'"); $num_rows = mysqli_num_rows($e_check); if ($num_rows > 0) { array_push($errors, "email_exists"); } } else { array_push($errors, "email_invalid"); } } else { array_push($errors, "email_mismatch"); } if (strlen($fname) > 25 || strlen($fname) < 2) { array_push($errors, "fname_invalid"); } if (strlen($lname) > 25 || strlen($lname) < 2) { array_push($errors, "lname_invalid"); } if ($pass != $pass_conf) { array_push($errors, "pass_mismatch"); } else { if(preg_match('/[^A-Za-z0-9]/', $pass)) { array_push($errors, "pass_invalid_char"); } else { if (strlen($pass) > 30 || strlen($pass) < 5) { array_push($errors, "pass_invalid_length"); } } } if (empty($errors)) { $pass = password_hash($pass, PASSWORD_BCRYPT); // Encrypts password $username = strtolower($fname . "." . $lname); $check_username_query = mysqli_query($con, "SELECT username FROM users WHERE username='$username'"); $i = 0; $temp = $username; while (mysqli_num_rows($check_username_query) != 0) { $i++; $temp = $username . $i; $check_username_query = mysqli_query($con, "SELECT username FROM users WHERE username='$temp'"); } if ($i > 0) { $username = $username . $i; } $rand = rand(1,16); $profile_pic = random_profile_pic($rand); $query = mysqli_query($con, "INSERT INTO users VALUES (NULL,'$fname','$lname','$username','$email','$pass','$date','$profile_pic','0','0','0',',')"); } } function random_profile_pic($rand) { $profile_pic = "assets/profile_pics/defaults/"; switch ($rand) { case 1: $profile_pic = $profile_pic . "head_alizarin.png"; break; case 2: $profile_pic = $profile_pic . "head_amethyst.png"; break; case 3: $profile_pic = $profile_pic . "head_belize_hole.png"; break; case 4: $profile_pic = $profile_pic . "head_carrot.png"; break; case 5: $profile_pic = $profile_pic . "head_deep_blue.png"; break; case 6: $profile_pic = $profile_pic . "head_emerald.png"; break; case 7: $profile_pic = $profile_pic . "head_green_sea.png"; break; case 8: $profile_pic = $profile_pic . "head_nephritis.png"; break; case 9: $profile_pic = $profile_pic . "head_pete_river.png"; break; case 10: $profile_pic = $profile_pic . "head_pomegranate.png"; break; case 11: $profile_pic = $profile_pic . "head_pumpkin.png"; break; case 12: $profile_pic = $profile_pic . "head_red.png"; break; case 13: $profile_pic = $profile_pic . "head_sun_flower.png"; break; case 14: $profile_pic = $profile_pic . "head_turqoise.png"; break; case 15: $profile_pic = $profile_pic . "head_wet_asphalt.png"; break; case 16: $profile_pic = $profile_pic . "head_wistera.png"; break; } return $profile_pic; } ?> <html> <head> <title>Meme Machine</title> </head> <body> <form action="register.php" method="POST"> <input type="text" name="reg_fname" placeholder="First Name" value ="<?php if(isset($_SESSION['reg_fname'])) { echo $_SESSION['reg_fname']; } ?>" required> <br> <?php if(in_array("fname_invalid", $errors)) echo "Your first name must be between 2 and 25 characters.<br>"; ?> <input type="text" name="reg_lname" placeholder="Last Name" value ="<?php if(isset($_SESSION['reg_lname'])) { echo $_SESSION['reg_lname']; } ?>" required> <br> <?php if(in_array("lname_invalid", $errors)) echo "Your last name must be between 2 and 25 characters.<br>"; ?> <input type="email" name="reg_email" placeholder="Email" value ="<?php if(isset($_SESSION['reg_email'])) { echo $_SESSION['reg_email']; } ?>" required> <br> <input type="email" name="reg_email_conf" placeholder="Confirm Email" value ="<?php if(isset($_SESSION['reg_email_conf'])) { echo $_SESSION['reg_email_conf']; } ?>" required> <br> <?php if(in_array("email_exists", $errors)) echo "Email already exists.<br>"; else if(in_array("email_invalid", $errors)) echo "Invalid format<br>"; else if(in_array("email_mismatch", $errors)) echo "The email's do not match.<br>"; ?> <input type="password" name="reg_pass" placeholder="Password" required> <br> <input type="password" name="reg_pass_conf" placeholder="Confirm Password" required> <br> <?php if(in_array("pass_mismatch", $errors)) echo "Your passwords do not match.<br>"; else if(in_array("pass_invalid_char", $errors)) echo "Your password can only contain english characters or numbers.<br>"; else if(in_array("pass_invalid_length", $errors)) echo "Your password must be between 5 and 30 characters.<br>"; ?> <input type="submit" name="register_but" value="Register"> </form> </body> </html>