PHP - Not checking all elseif’s at the same time

Asked

Viewed 45 times

0

Good, I’m creating a registration system with verification for testing to be implemented on a website. The problem is that the check assigns me an error due to multiple elseif in an if... can I only use an elseif? and how do I get some without destroying my verification method? I’ll leave my code here.

<?php
//conectar base de dados

//Variaveis
$Host = "localhost";
$User = "root";
$Password = "";
$DB = "RL";

//Ligação
$link = mysqli_connect($Host, $User, $Password, $DB);

//Condição
if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}else {
    echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
    echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;
        
        if(isset($_POST["BTN_Teste"])){
            //Variaveis De Input
            $Usuario = $_POST['Usuario'];
            $Email = $_POST['Email'];
            $Pass1 = $_POST['Pass1'];
            $Pass2 = $_POST['Pass2'];

            //funcoes de procuras
            $Procura_U = "SELECT * FROM Users WHERE Usuario='$Usuario'";
            $Procura_E = "SELECT * FROM Users WHERE Email='$Email'";

            //Resultados de funcoes de procuras
            $Res_U = mysqli_query($link, $Procura_U) or die(mysqli_error($link));
            $Res_E = mysqli_query($link, $Procura_E) or die(mysqli_error($link));

            //Verificação de user e email e senha
            if($Pass1 != $Pass2){
                $Input_erro3 = "Senhas Não Coincidem!";
            }elseif(mysqli_num_rows($Res_U) > 0){
                $Input_erro1 = "Usuário Já Registado!";
            }elseif(mysqli_num_rows($Res_E) > 0){
                $Input_erro2 = "Email Já Registado!";
            }else{
                //Confirmação de senhas e encriptação md5
                if($Pass1 === $Pass2){
                    $Pass3 = md5($Pass2);
                    //Funções de inserção
                    $Inserir = "INSERT INTO Users (Usuario, Email, Senha) VALUES('$Usuario', '$Email', '$Pass3')";
                    $Res_Inserir = mysqli_query($link, $Inserir) or die(mysqli_error($link));
                    echo "<br>";
                    echo "Registado Com Sucesso!";
                    exit();
                }
            }
        }else{
            //Divisao da mensagem de sucesso da base de dados
            echo"<br>"; 
            echo "Botao Registar Não Clicado!";
        }
}

mysqli_close($link);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="../CSS/style.css">
    <title>Registo</title>
</head>
<body>
    <center>
        <form action="" method="post">
            <span>Usuário</span><br>
            <input type="text" name="Usuario" placeholder="Usuário" id="" required>
            <?php
            //Exibir Mensagem De Erro
            if(isset($_POST["BTN_Teste"])){
                if(mysqli_num_rows($Res_U) > 0){
                    echo"<br>";
                    echo"<div class='Erro'>";
                    echo $Input_erro1;
                    echo"</div>";
                }
            }
            ?>
            <br>
            <span>E-mail</span><br>
            <input type="email" name="Email" placeholder="Email" id="" required>
            <?php
            //Exibir Mensagem De Erro
            if(isset($_POST["BTN_Teste"])){
                if(mysqli_num_rows($Res_E) > 0){
                    echo"<br>";
                    echo"<div class='Erro'>";
                    echo $Input_erro2;
                    echo"</div>";
                }
            }
            ?><br><br>
            <span>Senha</span><br>
            <input type="password" name="Pass1" placeholder="Senha" id="" required>
            <br><br>
            <span>Confirmação de Senha</span><br>
            <input type="password" name="Pass2" placeholder="Senha" id="" required>
            <?php
            //Exibir Mensagem De Erro
            if(isset($_POST["BTN_Teste"])){
                if($Pass1 != $Pass2){
                    echo"<br>";
                    echo"<div class='Erro'>";
                    echo $Input_erro3;
                    echo"</div>";
                }
            }
            ?>
            <br><br><br>
            <input type="submit" name="BTN_Teste" value="Registar">
        </form>
</center>
</body>
</html>

And O Style.css

.Erro input{
    border:1px solid red;
    box-shadow: 0 0 10px rgb(77, 221, 33);
}
.Erro{
    font-weight: bolder;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    color: black;
    background-color: red;
    width: 10.5em;
    font-size: 15px;
    border-radius: 10%;
    box-shadow: 0 0 20px rgb(221, 33, 33);
}
input{
    box-shadow: 0 0 10px rgba(0, 60, 255, 0.315);
}

AND THE DATABASE

-- phpMyAdmin SQL Dump
-- version 4.8.5
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: 06-Maio-2019 às 21:42
-- Versão do servidor: 10.1.38-MariaDB
-- versão do PHP: 7.3.3

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `rl`
--
CREATE DATABASE IF NOT EXISTS `rl` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `rl`;

-- --------------------------------------------------------

--
-- Estrutura da tabela `users`
--

CREATE TABLE `users` (
  `ID` int(11) NOT NULL,
  `Usuario` varchar(255) NOT NULL,
  `Email` varchar(255) NOT NULL,
  `Senha` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Extraindo dados da tabela `users`
--

INSERT INTO `users` (`ID`, `Usuario`, `Email`, `Senha`) VALUES
(1, 'Teste', '[email protected]', '317d7b01d3a11b214e9cdc429f0feea3');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`ID`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

  • I just didn’t find the error message, it puts the message you commented

1 answer

0


Ideally, you use logical structures to identify incorrect results. You have no limit to uses for if and elseif but this impairs the readability of your code.

To make the code more readable, you can write it as follows:

//Verificação de user e email e senha    
if (mysqli_num_rows($Res_U) > 0) {
    $Input_erro1 = "Usuário Já Registado!";
}

if (mysqli_num_rows($Res_E) > 0) {
    $Input_erro2 = "Email Já Registado!";
}

//Confirmação de senhas e encriptação md5
if ($Pass1 === $Pass2) {          
    $Pass3 = md5($Pass2);
    $Inserir = "INSERT INTO Users (Usuario, Email, Senha) VALUES('$Usuario', '$Email', '$Pass3')";

    //Função de inserção
    $Res_Inserir = mysqli_query($link, $Inserir) or die(mysqli_error($link));

    echo "<br>";
    echo "Registado Com Sucesso!";
    exit();

} else {
    $Input_erro3 = "Senhas Não Coincidem!";
}

It is also interesting to research about good practice programming with the PHP language to perfect your way of writing the codes.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.