Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Casas Junior

Conexão cai no 1º Acesso mas faz login no 2º

Recommended Posts

Boa tarde galera

 

A muito tempo tenho problema com meu sistema de login, acabei deixando de lado, mas como não é somente eu quem vai utilizar, acabou que tenho que achar o problema de uma vez, mas anda bem difícil..

 

Sempre quando faço o login pela 1ª vez no dia.. ele acessa avisa, que a conexão foi feita com sucesso, mas retorna para a tela de login.php novamente, entretanto, se eu digitar corretamente e novamente o usuário e senha (2ª vez), ele informa que deu sucesso e enfim passa para a área administrativa.. Se eu der logout e acessar novamente, vai embora, o problema é o 1º acesso no dia.

 

login.php

<form name="loginform" method="post" action="userauthentication.php">
		            <input name="usuario" type="text" placeholder="usuario" size="25" maxlength="50"/><br /><br /><input name="senha" type="password" placeholder="Senha"/><br /><br />
<input type="submit" value="Entrar" />

</form>

userauthentication.php

<?php
$host = "REMOVIDO";
$user = "REMOVIDO";
$pass = "REMOVIDO";
$banco = "REMOVIDO";
$conn = mysqli_connect($host, $user, $pass, $banco);
    
    if(!$conn){
        die("Falha na conexao: " . mysqli_connect_error());
    }
?>
<html>
<head>
<title>testeeeeeeee</title>
<script type="text/javascript">
function loginsuccessfully() {
	setTimeout("window.location='admarea.php?usuario=<?php echo $_POST['usuario'] ?>'", 1000);
}

function loginfailed() {
setTimeout("window.location='login.php'", 1000);	
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
	$usuario=$_POST['usuario'];
	$senha=$_POST['senha'];
$sql = mysqli_query($conn, "SELECT * FROM masterdata WHERE usuario = '$usuario' and senha = '$senha'") or die (mysqli_error());
$row = mysqli_fetch_assoc($sql);
	if($row > 0) {
session_start();
	$_SESSION[ 'usuario' ] = $row[ 'usuario' ]; //armazenando usuario


	$_SESSION[ 'dados_user' ] = $row; //armazenando tudo em forma de array associativo


	echo "<center>Autenticação OK! Você será redirecionado, Aguarde!</center>";
	echo "<script>loginsuccessfully()</script>";
} else {
	echo "<center>Senha ou Usuário invalidos</center>";
	echo "<script>loginfailed()</script>";
}
?>
</body>
</html>

admarea.php

<?php include("classe/conexao.php");

$consulta = "SELECT * FROM usuarios";
$con = $mysqli->query($consulta) or die($mysqli->error);

$usuario=$_GET['usuario'];
?>
<?php
session_start();
if((!isset ($_SESSION['usuario']) == true) and (!isset ($_SESSION['senha']) == true)){
	unset($_SESSION['usuario']);
	unset($_SESSION['senha']);
	header('location:login.php');
}
?>
<!DOCTYPE html>
<html>
<head>
<title>teste</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
Teste
</body>
</html>

 

Será que ha alguma anomalia nesse meu código, que está causando isso?

Isso ocorre para qualquer navegador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comece alterando a posição do session_start() ele deve estar sempre antes da liberação do buffer, dito de outra forma, antes que você enviei qualquer coisa para o navegador, para simplificar, coloque no topo do código sempre.

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, ESerra disse:

Comece alterando a posição do session_start() ele deve estar sempre antes da liberação do buffer, dito de outra forma, antes que você enviei qualquer coisa para o navegador, para simplificar, coloque no topo do código sempre.

 

Obrigado ESerra pela dica, adaptei conforme orientação.

 

Entretanto ainda fica a dúvida, por que será que ainda só conecta depois da 2º tentativa de login?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem algo estranho no seu código. De acordo com o código que você colocou acima, você não criou uma sessão para a senha  no arquivo userauthentication.php, assim por exemplo:

$_SESSION['senha'] = $row[ 'senha' ];

 

E no  admarea.php você chama a sessão senha, que não criou, na autenticação:

if((!isset ($_SESSION['usuario']) == true) and (!isset ($_SESSION['senha']) == true)){

Esse if tem muitos parenteses , você pode colocar assim:

if (!isset($_SESSION["usuario"]) and !isset($_SESSION["senha"])) {

Não precisa colocar true nem parenteses em volta do isset. Não sei se vai resolver o seu problema, mas parece que fora isso e a questão da segurança, está tudo certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesses casos nada melhor do que o "//" e o "echo"...

 

Se você faz a autenticação e esta voltando para a página de login você simplesmente tem que

ver qual chamada esta fazendo este retorno e assim ter mais clareza de onde esta o problema.

 

São 2 as chamadas para a pagina login.php, aqui:

On 6/29/2018 at 2:53 PM, Casas Junior said:

setTimeout("window.location='login.php'", 1000);

e aqui:

On 6/29/2018 at 2:53 PM, Casas Junior said:

header('location:login.php');

 

Comenta uma delas, reinicia o pc e faz o teste, se continuar com o problema, descomente

a anterior e comente a proxima, ai voce tem uma noção de qual pagina esta o problema e

fica mais facil de resolver. Depois de achar qual página (userauthentication.php ou

admarea.php) esta dando problema, vá comentando e dando echo nas linhas...

 

Eu particularmente nao gosto de usar javascript para redirecionamentos assim,

tirando ela ficaria muito mais facil para trabalhar... use o header(); e ao inves de recuperar

a variável usuário via POST, recupere ela da session().

 

<?php
	$usuario=$_POST['usuario'];
	$senha=$_POST['senha'];

	if(!isset($usuario) or !isset($senha)){
		// Se nao forem passados usuário e senha
		// Nem tente conexão, já redireciona para o login
		header('location:login.php');
	}

	// Se ja exite o arquivo de conexão você nao
	// precisa criar denovo, facilita a manutenção
	require_once("classe/conexao.php");

	$sql = mysqli_query($conn, "SELECT * FROM masterdata WHERE usuario = '$usuario' and senha = '$senha'") or die (mysqli_error());
	$row = mysqli_fetch_assoc($sql);
	if($row > 0) {
		session_start();
		$_SESSION[ 'usuario' ] = $row[ 'usuario' ]; //armazenando usuario
		$_SESSION[ 'dados_user' ] = $row; //armazenando tudo em forma de array associativo
		header('location:admarea.php');
	}else{
		header('location:login.php');
	}
?>

Caramba, depois de escrever isso tudo vi que você passa o parametro usuario como POST no

javascript e na hora de receber no adm area você recebe via GET, nem sei como ta funcionando rsrsrs...

De qualquer forma vai um palpite no admarea.php também:

 

<?php

session_start();

$usuario = $_SESSION['usuario'];

if(isset($usuario)){
	header('location:login.php');
}

require_once("classe/conexao.php");

$consulta = "SELECT * FROM usuarios";

$con = $mysqli->query($consulta) or die($mysqli->error);


?>
<!DOCTYPE html>
<html>
<head>
<title>teste</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
Teste
</body>
</html>

 

Escrevi mais ou menos so para dar uma noção mas nao testei, tem mais algumas coisas a serem

feitas para melhorar o codigo como receber as variáveis de forma terciária, diminuir os colchetes

e etc, mas isso é mais estética, o que realmente me parece bem preoculpante é a falta de tratamento

nas entradas dos dados, antes de fazer a consulta e a forma que a senha esta sendo armazenada (texto puro)...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quero agradecer ao ESerra, luiz14 MichellHenrique pelo apoio em tentar solucionar o problema.

 

MichellHenrique, fiquei alguns dias para responder as suas orientações, porque também não estava dando certo e eu fiz vários testes diferentes, nesse seu formato e também não resolvia.

 

Hoje 4:40h da manhã, me levantei da cama, tive uma ideia e deu certo, acho que eu sonhei com isso.. pq eu já não tava mais encontrando a resposta pra esse problema "bizarro".

 

Como não dava mensagem nenhuma, eu nunca iria descobrir que o problema era cookie, mas me veio do nada esse arquivo na minha cabeça, que eu já tinha usado outra vez, pra resolver problema de cookie:

 

php.ini

output_buffering = on

 

E resolveu o problema!! 

Bizarro!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia 

 

A primeira coisa que eu iria lhe sugerir é criar uma classe para conexão ao BD para você não ter que toda vez abrir uma conexão manualmente.

 

A segunda coisa seria separar o PHP do HTML. Temos varias maneiras de fazer isso, usando TPL, JavaScript e etc. 

 

Outra coisa seria você criar uma classe usuário e criar um método verificar login (exemplo) para verificar o login e senha do usuário. 

 

Caso a senha digitada no campo senha seja = a senha do BD você redireciona o usuário para tela de adm. 

 

Segue um exemplo das classes que eu uso: 

 

 

Classe para conexão: 

 

<?php

namespace Livro\Database;

use PDO;
use Exception;

/**
 * Cria conexões com bancos de dados

 */
final class Connection{
    /**
     * Não podem existir instâncias de TConnection
     */
    private function __construct() {}

    /**
     * Recebe o nome do conector de BD e instancia o objeto PDO
     */
    public static function open($name)
    {
        // verifica se existe arquivo de configuração para este banco de dados
        if (file_exists("App/Config/{$name}.ini"))
        {
            // lê o INI e retorna um array
            $db = parse_ini_file("App/Config/{$name}.ini");
        }
        else
        {
            // se não existir, lança um erro
            throw new Exception("Arquivo '$name' não encontrado");
        }

        // lê as informações contidas no arquivo
        $user = isset($db['user']) ? $db['user'] : NULL;
        $pass = isset($db['pass']) ? $db['pass'] : NULL;
        $name = isset($db['name']) ? $db['name'] : NULL;
        $host = isset($db['host']) ? $db['host'] : NULL;
        $type = isset($db['type']) ? $db['type'] : NULL;
        $port = isset($db['port']) ? $db['port'] : NULL;

        // descobre qual o tipo (driver) de banco de dados a ser utilizado
        switch ($type)
        {
            case 'pgsql':
                $port = $port ? $port : '5432';
                $conn = new PDO("pgsql:dbname={$name}; user={$user}; password={$pass};
                        host=$host;port={$port}");
                break;
            case 'mysql':
                $port = $port ? $port : '3306';
                //$conn = new PDO("mysql:host={$host};port={$port};dbname={$name}", $user, $pass);
                //echo "teste";
                $conn = new PDO("mysql:host=$host;dbname=$name;charset=utf8",$user,$pass);
                break;
            case 'sqlite':
                $conn = new PDO("sqlite:{$name}");
                break;
            case 'ibase':
                $conn = new PDO("firebird:dbname={$name}", $user, $pass);
                break;
            case 'oci8':
                $conn = new PDO("oci:dbname={$name}", $user, $pass);
                break;
            case 'mssql':
                $conn = new PDO("mssql:host={$host},1433;dbname={$name}", $user, $pass);
                break;
        }
        // define para que o PDO lance exceções na ocorrência de erros
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $conn;
    }
}

 

 

 

Arquivo para informar qual banco de dados quero usar: 

<?php

  /*host = localhost
  name = estoque//App/Database/livro.db
  user = root
  pass = ''
  type = mysql*/

  host = 127.0.0.1
  name = estoque
  user = root
  pass = ''
  type = mysql


?>
 

Se eu quiser usar outro banco de dados do trocar essa configuração. 

 

 

 

 

classes para fazer busca no banco de dados de maneira orientada a objeto. As três classes são necessárias:

 

<?php
namespace Livro\Database;

/**
 * Classe abstrata para permitir definição de expressões

 */
abstract class Expression
{
    // operadores lógicos
    const AND_OPERATOR = 'AND ';
    const OR_OPERATOR = 'OR ';

    // marca método dump como obrigatório
    abstract public function dump();
}

 

<?php
namespace Livro\Database;
require 'Filter.php';
/**
 * Permite definição de critérios

 */
class Criteria extends Expression
{
    private $expressions; // armazena a lista de expressões
    private $operators;     // armazena a lista de operadores
    private $properties;    // propriedades do critério

    /**
     * Método Construtor
     */
    function __construct()
    {
        $this->expressions = array();
        $this->operators = array();
    }

    /**
     * Adiciona uma expressão ao critério
     * @param $expression = expressão (objeto Expression)
     * @param $operator   = operador lógico de comparação
     */
    public function add(Expression $expression, $operator = self::AND_OPERATOR)
    {
        // na primeira vez, não precisamos de operador lógico para concatenar
        if (empty($this->expressions))
        {
            $operator = NULL;
        }

        // agrega o resultado da expressão à lista de expressões
        $this->expressions[] = $expression;
        $this->operators[]    = $operator;
    }

    /**
     * Retorna a expressão final
     */
    public function dump()
    {
        // concatena a lista de expressões
        if (is_array($this->expressions))
        {
            if (count($this->expressions) > 0)
            {
                $result = '';
                foreach ($this->expressions as $i=> $expression)
                {
                    $operator = $this->operators[$i];
                    // concatena o operador com a respectiva expressão
                    $result .= $operator. $expression->dump() . ' ';
                }
                $result = trim($result);
                return "({$result})";
            }
        }
    }

    /**
     * Define o valor de uma propriedade
     * @param $property = propriedade
     * @param $value    = valor
     */
    public function setProperty($property, $value)
    {
        if (isset($value))
        {
            $this->properties[$property] = $value;
        }
        else
        {
            $this->properties[$property] = NULL;
        }
    }

    /**
     * Retorna o valor de uma propriedade
     * @param $property = propriedade
     */
    public function getProperty($property)
    {
        if (isset($this->properties[$property]))
        {
            return $this->properties[$property];
        }
    }
}

 

<?php

namespace Livro\Database;

/**
 * Permite definir filtros de seleção

 */
class Filter extends Expression
{
    private $variable; // variável
    private $operator; // operador
    private $value;    // valor

    /**
     * Instancia um novo filtro
     * @param $variable = variável
     * @param $operator = operador (>,<)
     * @param $value      = valor a ser comparado
     */
    public function __construct($variable, $operator, $value)
    {
        // armazena as propriedades
        $this->variable = $variable;
        $this->operator = $operator;

        // transforma o valor de acordo com certas regras
        // antes de atribuir à propriedade $this->value
        $this->value     = $this->transform($value);
    }

    /**
     * Recebe um valor e faz as modificações necessárias
     *   para ele ser interpretado pelo banco de dados
     * @param $value = valor a ser transformado
     */
    private function transform($value)
    {
        // caso seja um array
        if (is_array($value))
        {
            // percorre os valores
            foreach ($value as $x)
            {
                // se for um inteiro
                if (is_integer($x))
                {
                    $foo[]= $x;
                }
                else if (is_string($x))
                {
                    // se for string, adiciona aspas
                    $foo[]= "'$x'";
                }
            }
            // converte o array em string separada por ","
            $result = '(' . implode(',', $foo) . ')';
        }
        // caso seja uma string
        else if (is_string($value))
        {
            // adiciona aspas
            $result = "'$value'";
        }
        // caso seja valor nullo
        else if (is_null($value))
        {
            // armazena NULL
            $result = 'NULL';
        }

        // caso seja booleano
        else if (is_bool($value))
        {
            // armazena TRUE ou FALSE
            $result = $value ? 'TRUE' : 'FALSE';
        }
        else
        {
            $result = $value;
        }
        // retorna o valor
        return $result;
    }

    /**
     * Retorna o filtro em forma de expressão
     */
    public function dump()
    {
        // concatena a expressão
        return "{$this->variable} {$this->operator} {$this->value}";
    }
}
 

 

 

 

Exemplo de uso: 

 

 

<?php

  /*
    A diferença entre a Active Record e Row Data table é que active record possui meotodo de nogocio e RDG não
   */
  class Produto{

    private static $con;
    private $data;

    function __get($prop){
      return $this->data[$prop];
    }


    function __set($prop, $value){
      $this->data[$prop] = $value;
    }


    public static function setConnection(PDO $con){
      self::$con = $con;
    }

    public function find($id){

      $sql = "SELECT * FROM produto WHERE id = '$id'";

      print $sql."<BR />";
      $result = self::$con->query($sql);
      return $result->fetchObject(__CLASS__);
    }


    public function all($filter = ''){

      $sql = "SELECT *  FROM produto ";
      if ($filter) {
        $sql.="WHERE $filter";
      }

      print $sql."<br />";
      $result = self::$con->query($sql);
      return $result->fetchAll(PDO::FETCH_CLASS, __CLASS__);
    }

    public function delete(){

      $sql = "DELETE FROM produto WHERE id = '{$this->id}'";
      print $sql."<br />";
      return self::$con->query($sql);
    }

    public function save(){

      if (empty($this->data['id'])) {

        $id = $this->getLastId() + 1;
        $sql= "insert into produto (id,descricao,estoque, preco_custo,preco_venda,codigo_barras,data_cadastro,origem) ".
        "values ('{$id}',".
        "'{$this->descricao}',".
        "'{$this->estoque}',".
        "'{$this->preco_custo}',".
        "'{$this->preco_venda}',".
        "'{$this->codigo_barras}',".
        "'{$this->data_cadastro}',".
        "'{$this->origem}')";

      }else{
        $sql= "update produto set ".
        "descricao      = '{$this->descricao}',".
        "estoque        = '{$this->estoque}',".
        "preco_custo    = '{$this->preco_custo}',".
        "preco_venda    = '{$this->preco_venda}',".
        "codigo_barras  = '{$this->codigo_barras}',".
        "data_cadastro  = '{$this->data_cadastro}',".
        "origem         = '{$this->origem}'".
        "where id       = '{$this->id}'";
      }

      print "$sql <br>";

      return self::$con->exec($sql);

    }

    public function getLastId(){
      $sql = "select max(id) as max from produto";
      $result = self::$con->query($sql);
      $data = $result->fetch(PDO::FETCH_OBJ);
      return $data->max;
    }

    public function getMargemLucro(){

      return (($this->prec_venda - $this->preco_custo) / $this->preco_custo) * 100;
    }

    public function registraCompra($custo,$quantidade){
      $this->custo = $custo;
      $this->estoque += $quantidade;
    }


  }

 ?>
 

 

 

 

 

Então como eu disse. Depois de feito, só chamar o método de onde precisar que você terá os dados em mãos. 

 

 

 

 

Espero poder ter dado uma visão do quanto orientação a objeto pode ajudar no seu caso. 

 

 

 

 

 

 

 

  

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na realidade output_buffering "resolver" o problema apenas indica que existe alguma coisa sendo enviada para o navegador antes do session_start()... 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tirar um tempo, analizar e resolver os erros é essencial, principalmente os problemas de segurança,

senha em texto puro no bd (salve usando hash e salt), prevenção contra inject e etc...


Como havia mencionado anteriormente nao testei o código e para variar ao passar os olhos no codigo

esses dias para tras por desencargo de consiência encontrei um erro e atualizei, mas ainda assim não

cheguei a testar na prática. Vale a pena dar uma estudada e dar uma melhorada no seu código. Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.