Login em PHP com SQL Server 2012

Bom dia gente e feliz ano novo a todos

Estou desenvolvendo uma aplicação em PHP(99%) concluída e deixei o Login para o Final.

Será basicamente o simples, o usuário digita seu login e senha e valida o usuário levando ele para a página inicial ou caso o usuário erre seu login ou não esteja cadastrado para uma página de erro.

O problema, é que independente do que for digitado, ele da sucesso sempre entrando na página inicial. Por enquanto tenho somente um usuário no banco registrado(Teste), mas se digitar zezinho, joaquim, antônio ou qualquer outro nome entra do mesmo jeito.

Segue abaixo o código do valida.php

<?php 
		#Definir char-set 
		ini_set('default_charset', 'UTF-8'); 
		set_time_limit(120); //Define tempo limite de execução
		ERROR_REPORTING (E_ERROR);  //Somente exibe erros fatais
		include "conexao.php"; //Carrega funções de conexão com BD
		
		#Inicia o processo de verificação de login e senha 
		$sqlq = new COM("ADODB.Connection"); //instancia a classe de conexao
		$sqlq->Open("PROVIDER=SQLOLEDB;Data Source=.;Initial Catalog=Ocorrencias;User ID=usr_des_001; Password=usr_des_001"); //estabelece conexão com MSSQL 
		
		$query = "SELECT * FROM ocorrencias..tb_valida WHERE [usuario] ='".$usuario."'";
		$query .= "	AND [senha]='".$senha."'"; 
			
			/*SQL(); 
			global $sql; 
			$result = $sql -> execute($query) 		
				if(!$query -> EOF) { 
					return ValidaLogin($usuario, $senha); 
				else { 	
					return */
		
		
		
		
		session_start();		
		$usuario = addslashes($_REQUEST['campo_usuario']); 
		$senha = md5($_REQUEST['campo_senha']); 
		
		#Cria a consulta 
		$query = "SELECT * FROM ocorrencias..tb_valida WHERE [usuario] ='".$usuario."'";
		$query .= "	AND [senha]='".$senha."'"; 
		$result =  $sqlq -> execute($query); 
		//$num = sqlsrv_has_rows($result);
		
		//Se logar com sucesso
		if($result -> EOF) { 
				$_SESSION['usuario'] = $_REQUEST['campo_usuario']; 
				$_SESSION['senha'] = $_REQUEST['campo_senha']; 
				header("Location:pagInicial.php"); 
				
				$result -> MoveNext(); 
		} else { 
			unset ($_SESSION['usuario']);
			unset ($_SESSION['senha']);
			header("Location:erro.php"); 
			echo $query; 
			echo "<BR><BR>";
			echo "<h3>Erro no sistema!!!!</h3>"; 
			die(print_r(sqlsrv_errors(), true));
		}
		
?> 

Só isso, bom ano novo a todos

Não conheço os comandos do sql server via COM, mas essa linha:

if($result -> EOF) { 
...

Poderia ser algo assim?

if($result->Rows->Count() == 1) { //obrigatorio 1 usuario... 

Dica: evite usar $_REQUEST, ele serve tanto para requisições GET quanto POST e isso pode sobrescrever valores gerando conflitos e ocasionando comportamentos estranhos ao seu código.

Sugiro usar $_GET ou $_POST (no seu caso como está passando senha imagino ser $_POST), e melhor ainda, use as funções de filtro do php… filter_input

$usuario = filter_input(INPUT_POST, 'campo_usuario');
$senha = filter_input(INPUT_POST, 'campo_senha');

Outra coisa, ao usar EOF + MoveNext, é ideal para iterar vários registros na query, o que não é seu caso, pois você traz apenas um registro na comparação.

E pra finalizar, a segurança da sua query está seriamente comprometida ao fazer concatenações de variáveis diretamente, podendo sofrer ataques de SQL injection já que você não está fazendo nenhum tratamento/filtro, pesquise algo sobre prepared statements via com pra ver se resolve