Tela de Login, não funciona na nuvem, nem puxar infos. via get
Bom dia,
Fiz um sistema em php que local funciona perfeitamente, porém quando subi para meu servidor online e começou apresentar alguns problemas, o primeiro é na tela de login que não está funcionando, ele não consegue fazer as comparações não sei o por que, não sei se é por causa do MD5, enfim não consegui diagnosticar o problema. A conexão com o banco está correta, pois fiz alguns testes.
Segue minha tela de login:
O segundo problema que estou tendo é para trazer o id via get seja para alterar, visualizar, ou deletar ele dá o seguinte erro:
Parse error: syntax error, unexpected T_INT_CAST in /home/control/public_html/os/read.php on line 5
Alguem pode me ajudar?
Vlw!
Fiz um sistema em php que local funciona perfeitamente, porém quando subi para meu servidor online e começou apresentar alguns problemas, o primeiro é na tela de login que não está funcionando, ele não consegue fazer as comparações não sei o por que, não sei se é por causa do MD5, enfim não consegui diagnosticar o problema. A conexão com o banco está correta, pois fiz alguns testes.
Segue minha tela de login:
<?php session_start(); require ("includes/database.php"); $btEntrar = isset($_POST["btEntrar"]); if ($btEntrar =='Entrar'){ // Recupera Login e Senha $login = isset($_POST["login"]); $pass = isset($_POST["pass"]) ? md5(trim($_POST["pass"])) : FALSE; if((!empty($login)) and (empty($pass))) { echo "<script> alert('Preencha os campos de Login e Senha!'); </script>"; } else if((empty($login)) and (!empty($pass))) { echo "<script> alert('Preencha os campos de Login e Senha!'); </script>"; } else { echo "<script> alert('Preencha os campos de Login e Senha!'); </script>"; } $pdo = Database::connect(); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT * FROM usuarios WHERE login = ?"; $q = $pdo->prepare($sql); $q->bindvalue(1, $_POST['login'], PDO::PARAM_STR); $q->execute(); if($q) { foreach ($q as $dados) { if(($pass) == ($dados["pass"])) { // Grava os dados da sessao e redireciona o usuário $_SESSION["usuario"] = stripslashes($dados["login"]); $_SESSION["nome_usuario"] = $dados["nome_usu"]; $_SESSION["id_usu"] = $dados["id_usu"]; $_SESSION["tp_usu"] = $dados["tp_usu"]; $_SESSION["depto"] = $dados["depto"]; header("Location:index.php"); } else { echo "<script> alert('Usuário ou Senha Inválidos!'); </script>"; } } } else { echo "<script> alert('Usuário ou Senha Inválidos!'); </script>"; exit; } } ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8"> <link rel="Stylesheet" href="index.css" /> <link rel="stylesheet" href="css/style.css" media="screen" type="text/css" /> <script src="js/bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="span10 offset1"> <form class="form-horizontal menu_css" action="index.php" method="post"> <div id="menu_css1" class="control-group"> <span></span> <label class="control-label"><h2>Login :</h2></label> <div class="controls"> <input name="login" type="text" placeholder="Usuário"> </div> </div> <div class="control-group"> <div class="controls"> <input name="pass" type="password" placeholder="Senha"> </div> </div> <button type="submit" id="btEntrar" name="btEntrar" value="Entrar" >LOGIN </button> </form> </div> </div> </body> </html>
O segundo problema que estou tendo é para trazer o id via get seja para alterar, visualizar, ou deletar ele dá o seguinte erro:
Parse error: syntax error, unexpected T_INT_CAST in /home/control/public_html/os/read.php on line 5
Meu código está desse jeito: $id = null;if ( !empty((int)$_GET['id'])) { $id = $_REQUEST['id']; }
Alguem pode me ajudar?
Vlw!
João Vitor
Curtidas 0
Respostas
Gisele Fagundes
04/12/2014
Olá João,
1º CASO
Sinceramente não entendi como você conseguiu fazer funcionar local... o problema deve ser o seguinte, vi que várias vezes você escreveu algo assim $variavel = isset($_POST["campo"]); O retorno disso é TRUE ou FALSE, ele vai dizer verdadeiro ou falso a depender se a variavel existe só isso. Agora para atribuir o valor do request você tem que colocar $variavel = $_POST['campo'] , ai sim você está pegando o valor desejado.
Nesse primeiro caso aqui ... => $btEntrar = isset($_POST["btEntrar"]); ... aqui está retornando TRUE ou FALSE. Para fazer a comparação if ($btEntrar =='Entrar') você precisa colocar $btEntrar = $_POST['btEntrar'] sem o isset.
2º CASO
O problema que dá é porque você está usando o (int), trate o $_GET['id'] fora do empty. Esta assim :
if ( !empty((int)$_GET['id'])) {
Deixe assim, tratando a variavel antes:
$_GET['id'] = (int) $_GET['id'];
if ( !empty($_GET['id'])) {
1º CASO
Sinceramente não entendi como você conseguiu fazer funcionar local... o problema deve ser o seguinte, vi que várias vezes você escreveu algo assim $variavel = isset($_POST["campo"]); O retorno disso é TRUE ou FALSE, ele vai dizer verdadeiro ou falso a depender se a variavel existe só isso. Agora para atribuir o valor do request você tem que colocar $variavel = $_POST['campo'] , ai sim você está pegando o valor desejado.
Nesse primeiro caso aqui ... => $btEntrar = isset($_POST["btEntrar"]); ... aqui está retornando TRUE ou FALSE. Para fazer a comparação if ($btEntrar =='Entrar') você precisa colocar $btEntrar = $_POST['btEntrar'] sem o isset.
2º CASO
O problema que dá é porque você está usando o (int), trate o $_GET['id'] fora do empty. Esta assim :
if ( !empty((int)$_GET['id'])) {
Deixe assim, tratando a variavel antes:
$_GET['id'] = (int) $_GET['id'];
if ( !empty($_GET['id'])) {
GOSTEI 0
Ronaldo Lanhellas
04/12/2014
Bom dia,
Fiz um sistema em php que local funciona perfeitamente, porém quando subi para meu servidor online e começou apresentar alguns problemas, o primeiro é na tela de login que não está funcionando, ele não consegue fazer as comparações não sei o por que, não sei se é por causa do MD5, enfim não consegui diagnosticar o problema. A conexão com o banco está correta, pois fiz alguns testes.
Segue minha tela de login:
O segundo problema que estou tendo é para trazer o id via get seja para alterar, visualizar, ou deletar ele dá o seguinte erro:
Parse error: syntax error, unexpected T_INT_CAST in /home/control/public_html/os/read.php on line 5
Alguem pode me ajudar?
Vlw!
Fiz um sistema em php que local funciona perfeitamente, porém quando subi para meu servidor online e começou apresentar alguns problemas, o primeiro é na tela de login que não está funcionando, ele não consegue fazer as comparações não sei o por que, não sei se é por causa do MD5, enfim não consegui diagnosticar o problema. A conexão com o banco está correta, pois fiz alguns testes.
Segue minha tela de login:
<?php session_start(); require ("includes/database.php"); $btEntrar = isset($_POST["btEntrar"]); if ($btEntrar =='Entrar'){ // Recupera Login e Senha $login = isset($_POST["login"]); $pass = isset($_POST["pass"]) ? md5(trim($_POST["pass"])) : FALSE; if((!empty($login)) and (empty($pass))) { echo "<script> alert('Preencha os campos de Login e Senha!'); </script>"; } else if((empty($login)) and (!empty($pass))) { echo "<script> alert('Preencha os campos de Login e Senha!'); </script>"; } else { echo "<script> alert('Preencha os campos de Login e Senha!'); </script>"; } $pdo = Database::connect(); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT * FROM usuarios WHERE login = ?"; $q = $pdo->prepare($sql); $q->bindvalue(1, $_POST['login'], PDO::PARAM_STR); $q->execute(); if($q) { foreach ($q as $dados) { if(($pass) == ($dados["pass"])) { // Grava os dados da sessao e redireciona o usuário $_SESSION["usuario"] = stripslashes($dados["login"]); $_SESSION["nome_usuario"] = $dados["nome_usu"]; $_SESSION["id_usu"] = $dados["id_usu"]; $_SESSION["tp_usu"] = $dados["tp_usu"]; $_SESSION["depto"] = $dados["depto"]; header("Location:index.php"); } else { echo "<script> alert('Usuário ou Senha Inválidos!'); </script>"; } } } else { echo "<script> alert('Usuário ou Senha Inválidos!'); </script>"; exit; } } ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8"> <link rel="Stylesheet" href="index.css" /> <link rel="stylesheet" href="css/style.css" media="screen" type="text/css" /> <script src="js/bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="span10 offset1"> <form class="form-horizontal menu_css" action="index.php" method="post"> <div id="menu_css1" class="control-group"> <span></span> <label class="control-label"><h2>Login :</h2></label> <div class="controls"> <input name="login" type="text" placeholder="Usuário"> </div> </div> <div class="control-group"> <div class="controls"> <input name="pass" type="password" placeholder="Senha"> </div> </div> <button type="submit" id="btEntrar" name="btEntrar" value="Entrar" >LOGIN </button> </form> </div> </div> </body> </html>
O segundo problema que estou tendo é para trazer o id via get seja para alterar, visualizar, ou deletar ele dá o seguinte erro:
Parse error: syntax error, unexpected T_INT_CAST in /home/control/public_html/os/read.php on line 5
Meu código está desse jeito: $id = null;if ( !empty((int)$_GET['id'])) { $id = $_REQUEST['id']; }
Alguem pode me ajudar?
Vlw!
Partindo do principio que tudo estava funcionando normalmente no seu servidor local e quando você colocou na hospedagem passou a apresentar erros que antes não tinham, você poderia comparar o seu php.ini com o php.ini da hospedagem e ver as diferenças, provavelmente tem alguma configuração habilitada em um que não está em outro. Isso é muito comum.
GOSTEI 0
Claudio Lopes
04/12/2014
Outro ponto de atenção... de uma olhada nesses links
[url]https://www.devmedia.com.br/sql-injection-o-que-e-por-que-funciona-e-como-prevenir-sql-magazine-23/6102[/url]
[url]https://www.devmedia.com.br/sql-injection-em-ambientes-web/9733[/url]
[url]https://www.devmedia.com.br/evitando-sql-injection-em-aplicacoes-php/27804[/url]
duas coisas que EU não faria...
receber os campos via post e não trata-los afim de evitar o sql-injetction (vc está usando o md5, mas não informou como fez a query)
Editar campos de usuários via get.... geralmente aparece o link na barra de endereços ou na barra de status, uma pessoa maliciosa poderia, através dos parâmetros passar um id de outra pessoa (caso você não o trate) e tracar/editar e tudo mais.
é só uma dica...
[url]https://www.devmedia.com.br/sql-injection-o-que-e-por-que-funciona-e-como-prevenir-sql-magazine-23/6102[/url]
[url]https://www.devmedia.com.br/sql-injection-em-ambientes-web/9733[/url]
[url]https://www.devmedia.com.br/evitando-sql-injection-em-aplicacoes-php/27804[/url]
duas coisas que EU não faria...
receber os campos via post e não trata-los afim de evitar o sql-injetction (vc está usando o md5, mas não informou como fez a query)
Editar campos de usuários via get.... geralmente aparece o link na barra de endereços ou na barra de status, uma pessoa maliciosa poderia, através dos parâmetros passar um id de outra pessoa (caso você não o trate) e tracar/editar e tudo mais.
é só uma dica...
GOSTEI 0