> <?php
> $conectar = mysql_connect('localhost', 'root', 'xxx') or die('Erro na conexao');
> mysql_select_db("projetoipe") or die ('base não encontrada');
> ?>
Quando executo, aparece este erro erro:
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\IPE_PROJETO\conexao.php:2 Stack trace: #0 C:\xampp\htdocs\IPE_PROJETO\valida_login.php(9): include_once() #1 {main} thrown in C:\xampp\htdocs\IPE_PROJETO\conexao.php on line 2
Pelo pouco que sei, acredito ser o erro na classe de conexao. Será isso mesmo?
Obrigado a todos.
Em relação a linha 10, consegui resolver, bastava inserir o link da conexão. Agora estou com mesmo erro na linha 11: Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\PROJETO-IPE\valida_login.php on line 11
No seu SQL, você declarou LIMITE, mas é LIMIT, por isso está causando erro e a função mysqli_query não está retornando um resource…
$result = ...
var_dump($result);
Faça o teste antes de mudar, se o var_dump mostrar FALSE, quer dizer que sua query tem erro de sintaxe, depois de mudar o var_dump deve mostrar RESOURCE…
Aliás, para o seu caso o LIMIT 1 é desnecessário, já que não faz sentido algum trazer do banco mais de um mesmo usuário com a mesma senha não é mesmo? (se isso acontecer você tem erro de lógica no seu código, já que deveria tratar a entrada de um único login/senha por usuário…)
E recomendo muito, independentemente da versão do PHP, usar PDO, isso evita você ter problemas de segurança no banco, seu SQL está muito fácil de ser “invadido” ou ter sql “injetado” (SQL injection)… estude sobre prepared statements…
<?php
class Database
{
private static $dbName = 'projetoipe' ;
private static $dbHost = 'localhost' ;
private static $dbUsername = 'root';
private static $dbUserPassword = 'xxx';
private static $cont = null;
public function __construct() {
exit('Init function is not allowed');
}
public static function connect()
{
// One connection through whole application
if ( null == self::$cont )
{
try
{
self::$cont = new PDO( "mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);
}
catch(PDOException $e)
{
die($e->getMessage());
}
}
return self::$cont;
}
public static function disconnect()
{
self::$cont = null;
}
}
Os erros sumiram
Porém é mostrado os dados digitados nos campos login e senha. Pelo que percebi não está validando com o banco, pois inseri outros dados, e é impresso o que é digitado.
Este é o arquivo valida_login:
<?php
session_start();
$login = $_POST['login'];
$senha = $_POST['senha'];
echo $login.' - ' .$senha;
include_once "conexao.php";
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo = ("SELECT * FROM usuario WHERE login='$login' AND senha='$senha'");
Primeiro gostaria de saber como aplicar recursos contra sql injection.
Nesse arquivo, faço as validações. Da forma que testei, é sempre obrigado entrar com os dados corretos. Mas poderiam checar se ainda tem algo de errado.