Ir para conteúdo

Arquivado

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

henrique-rafael

criar sessão somente se tiver pelo menos um produto escolhido

Recommended Posts

Olá galera,

É possível criar alguma função que passe a inicializar a session_start somente após a inclusão do primeiro produto no carrinho de compras?

por exemplo:

No meu site eu tenho um carrinho de compras, mas não quero em toda a página ficar inicializando uma session_start sem necessidade, ou seja, gostaria de inicializar a session_start somente após o usuário solicitar a inclusão do primeiro produto, caso contrário ele ficará navegando no site sem a session se inicializar.

Isso é possível? Isso é uma boa pratica, ou pode me tirar o sono futuramente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso não faz nenhum sentido... mesmo porque, se você pretende usar o carrinho de compras com sessões, você não conseguiria utilizar essa lógica nele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você sugere que a melhor idéia é simplesmente dar um session_start nas páginas idependente de o usuário ter enviado um $_POST de inclusão do primeiro produto, ou ainda não ter e talvez nem escolher um produto?

Nas minhas pesquisas parece que tudo leva a essa lógica de startar a sessão mesmo que o usuário não solicite a inclusão de um primeiro produto (0 zero produtos).

Não quero ficar poluindo o meu servidor com arquivos de sessions desnecessárias, mas pelo visto a lógica na qual estou pensando é impraticavel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você for guardar os dados na sessão, não há uma "melhor solução", você precisará iniciar a sessão em todas as páginas, pois caso contrário você não saberá se existe algo na sessão, mesmo que o usuário tenha colocado algo nela.

Os arquivos temporários da sessão são (ou deveriam) ser limpos de tempos em tempos, logo, isso por si só não é um problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por studdiox
      Galera estou com um problema com session start ...
       
      houve atualização na versão do php no servidor de hospedagem caindo fora alguns argumentos estou tentando com uma nova versão
       
      passada por indicação de um colega aqui do forum washalbano
      que já me quebrou uma baita galho eliminando o primeiro erro do argumento extinguido da versão do php ( session_is_registered  )
      mas agora ele não quer logar se alguém puder dar uma mãozinha vou postar os códigos abaixo do formulário de acesso
      log-admin.php e da verificação loga.php
       
      e o erro que retorna a mensagem "Acesso Negado !! Usuário Não Logado"
      vinda do final do código   loga.php  Não aparece nenhum erro apenas  isso e retorna para o formulário de login ( log-admin.php )
       
      //agora a parte que verifica se o login já foi feito // se não há user em $_SESSION if (!isset($_SESSION['nome'])) { // Usuário não logado! Redireciona para a página de login echo '<script>' . 'alert("Acesso Negado !! Usuario Não Logado");' . 'document.location="log-admin.php";' . '</script>';  
       
       
      log-admin.php
      <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>: : : PAINEL DE ADMINISTRACAO DO WEBSITE : : :</title> <style type="text/css"> <!-- body, td, th { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: #FFFFFF; } body { background-color: #000000; } a:link { color: #000000; text-decoration: none; } a:visited { color: #000000; text-decoration: none; } a:hover { color: #000000; text-decoration: none; } a:active { color: #000000; text-decoration: none; } --> </style> </head> <body> <?php session_name("user1,user2"); session_start(); ?> <form name="form1" method="post" action="loga.php?acao=logar"> <div align="center"> <p>&nbsp;</p> <p>Painel de Acesso <br> </p> </div> <table width="338" border="0" align="center" cellpadding="4" cellspacing="2"> <tr> <td width="59" bordercolor="#333333" bgcolor="#333333">NOME : </td> <td width="239" bordercolor="#333333" bgcolor="#333333"> <label> <input name="nome" type="text" id="nome" size="35"> </label> </td> </tr> <tr> <td bordercolor="#333333" bgcolor="#333333">SENHA : </td> <td bordercolor="#333333" bgcolor="#333333"> <label> <input name="pwd" type="password" id="pwd" size="35"> </label> </td> </tr> <tr> <td colspan="2" bordercolor="#333333" bgcolor="#333333"> <div align="center"> <label> <input type="submit" name="Submit" value="ENTRAR"> </label> <div align="right"></div> </div> <div align="right"></div> </td> </tr> </table> <div align="center"><br> <br> <br> <br> <br> <br> <label> </label> <a href="deslogar.php">Deslogar</a><br> </div> </form> </body> </html>  
       
      loga.php
      <?php // Turn off all error reporting error_reporting(0); // Report simple running errors error_reporting(E_ERROR | E_WARNING | E_PARSE); // Reporting E_NOTICE can be good too (to report uninitialized // variables or catch variable name misspellings ...) error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); // Report all errors except E_NOTICE // This is the default value set in php.ini error_reporting(E_ALL ^ E_NOTICE); // Report all PHP errors error_reporting(E_ALL); // Same as error_reporting(E_ALL); ini_set('error_reporting', E_ALL); ini_set("display_errors", 1); ?> <?php // variáveis para conexão $host = 'localhost'; // define o host do banco de dados $user = 'root'; // user do banco de dados $password = ''; // senha do banco de dados $database = 'database'; // nome do banco de dados // estabelecer conexão com o mysql $sqli = new mysqli($host, $user, $password); // verificar se houve erro na conexão if ($sqli->connect_error) { // se houve erro, mostra erro na tela echo "<p>Erro ao Conectar: $sqli->connect_error</p>"; } // alterar o tipo de codificação da conexão com o banco de dados, para utf8 if (!$sqli->set_charset('utf8')) { echo "<p class='error'>O charset não é utf8: $sqli->error</p>"; } // selecionar/abrir o banco de dados para trabalhar if (!$sqli->select_db($database)) { // se o banco de dados não for encontrado echo "<p class='error'>Banco de dados não encontrado, chefe!</p>"; } // arquivo de verificar o login session_name('user1,user2'); session_start(); if (isset($_POST['acao']) && $_POST['acao'] == 'logar') { // trata o nome $nome = $sqli->real_escape_string($_POST['nome']); // define a query de busca $query = "SELECT * FROM sis_login WHERE login='$nome' LIMIT 1"; // executa a query e guarda o resultado em $result $result = $sqli->query($query); // se há algum resultado if ($result->num_rows) { // guarda o resultado em $dados $dados = $result->fetch_assoc(); // verificar se a senha postada é igual a senha retornada if ($_POST['pwd'] == $dados['senha']) { // registra o user na sessão $_SESSION['nome'] = $dados; // redireciona para admin.php header('Location: admin.php'); exit; } // Se a senha não confere else { echo '<script>' . 'alert("Senha Inválida !!");' . 'document.location="log-admin.php";' . '</script>'; } } // Se não há resultados em $result, o Login é inválido else { echo '<script>' . 'alert("Login Inválido !!");' . 'document.location="log-admin.php";' . '</script>'; } } //agora a parte que verifica se o login já foi feito // se não há user em $_SESSION if (!isset($_SESSION['nome'])) { // Usuário não logado! Redireciona para a página de login echo '<script>' . 'alert("Acesso Negado !! Usuario Não Logado");' . 'document.location="log-admin.php";' . '</script>'; } ?>  
    • Por lucas22001
      boa tarde f iz meu site em php mvc e quando fui colocar ele no ar de esse erro
       
      Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer:
      pode me ajudar
      meu htaccess ta assim
      RewriteEngine On 
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f 
      RewriteRule ^(.*)$ /teste/index.php?q=$1 [QSA,L] 
       
       
      a index assim 
       
      <?php
      session_start();

      require 'config.php';
      spl_autoload_register(function($class){
          if(file_exists('controller/'.$class.'.php')){
              require 'controller/'.$class.'.php';
          }elseif(file_exists('model/'.$class.'.php')){
              require 'model/'.$class.'.php';
          }elseif(file_exists('core/'.$class.'.php')){
              require 'core/'.$class.'.php';
          }
      });
      $core = new Cores();
      $core->run();
      ?>
    • Por ewersonsv
      Erro apresentado:
      Código do index.php Como Está:
      <?php $host = "localhost"; $user = "root"; $pass = "xampp175"; $banco = "antigo"; $conexao = mysql_connect ($host, $user, $pass) or die(mysql_error()); mysql_select_db($banco) or die(mysql_error()); ?> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>RoePet! | Login</title> <link href="css/bootstrap.min.css" rel="stylesheet"> <link href="font-awesome/css/font-awesome.css" rel="stylesheet"> <link href="css/animate.css" rel="stylesheet"> <link href="css/style.css" rel="stylesheet"> <script type="text/javascript"> function loginsuccessfully() { setTimeout("window.location='inicio.php'", 1000); } function loginfailed() { setTimeout("window.location='index.php'", 1000); } </script> </head> <body class="gray-bg"> <?php if($_POST['logar']) { //MYSQL - LOGIN $email=$_POST['email']; $senha=$_POST['senha']; $sql = mysql_query ("SELECT * FROM usuarios WHERE email = '$email' and senha = '$senha'") or die(mysql_error()); $row = mysql_num_rows($sql); if($row > 0){ session_start(); $_SESSION['email']=$_POST['email']; $_SESSION['senha']=$_POST['senha']; echo "<script> loginsuccessfully() </script>"; } else { $_SESSION['loginErro'] = "Usuário ou senha inválido"; //echo "<script> loginfailed() </script>"; } } ?> <div class="middle-box text-center loginscreen animated fadeInDown"> <div> <div> <h1 class="logo-name"><font color="red">R</font><font color="black">P</font><font color="red">+</font></h1> </div> <h3>Seja Bem Vindo A <b><?php echo $site['SiteName']; ?></b></h3> <p>Area Exclusiva Para Membros!</p> <p> Vantagem Membros? <br /> Vantagem VIP? </p> <p class="text-center text-danger"> <?php if(isset($_SESSION['loginErro'])){ echo $_SESSION['loginErro']; unset($_SESSION['loginErro']); }?> </p> <p class="text-center text-success"> <?php if(isset($_SESSION['logindeslogado'])){ echo $_SESSION['logindeslogado']; unset($_SESSION['logindeslogado']); } ?> </p> <form action="" method="post" enctype="multipart/form-data" class="m-t" role="form"> <div class="form-group"> <input name="email" type="email" class="form-control" placeholder="E-Mail Ou Usuario" required=""> </div> <div class="form-group"> <input name="senha" type="password" class="form-control" placeholder="Senha" required=""> </div> <input type="submit" name="logar" class="btn btn-primary block full-width m-b" value="Entrar" /> <a href="#"><small>Esqueci Minha Senha!</small></a> <p class="text-muted text-center"><small>Você Nao Tem Uma Conta?</small></p> <a class="btn btn-sm btn-white btn-block" href="registrar.php">Cria Uma Conta Agora.</a> </form> <p class="m-t"> <small><b><?php echo $site['SiteName']; ?></b> © 2016~2017</small> </p> </div> </div> <!-- Mainly scripts --> <script src="js/jquery-2.1.1.js"></script> <script src="js/bootstrap.min.js"></script> </body> </html>
    • Por jfcdesigner
      Bom dia,
      Preciso da ajuda de todos vocês, estou instalando um plugin e deu esse erro:
       
      Warning: session_start() [function.session-start]: open(/var/lib/php-cgi/session/sess_55knh3k259b35p772pborccdf7, O_RDWR) failed: No such file or directory (2) in/home/storage/2/de/5f/ortodontiautoligavel/public_html/provisorio/wp-content/plugins/blog-designer/blog-designer.php on line 1890

      Como posso resolver isso?
      <?php if ((get_option('facebook_link') == 0) || (get_option('twitter_link') == 0) || (get_option('google_link') == 0) || (get_option('linkedin_link') == 0) || (get_option('instagram_link') == 0) || ( get_option('pinterest_link') == 0 )) { ?> <div class="social-component"> <?php if (get_option('facebook_link') == 0): ?> <a href="<?php echo 'https://www.facebook.com/sharer/sharer.php?u=' . get_the_permalink(); ?>" target= _blank class="facebook-share"><i class="fa fa-facebook"></i></a> <?php endif; ?> <?php if (get_option('twitter_link') == 0): ?> <a href="<?php echo 'http://twitter.com/share?&url=' . get_the_permalink(); ?>" target= _blank class="twitter"><i class="fa fa-twitter"></i></a> <?php endif; ?> <?php if (get_option('google_link') == 0): ?> <a href="<?php echo 'https://plus.google.com/share?url=' . get_the_permalink(); ?>" target= _blank class="google"><i class="fa fa-google-plus"></i></a> <?php endif; ?> <?php if (get_option('linkedin_link') == 0): ?> <a href="<?php echo 'http://www.linkedin.com/shareArticle?url=' . get_the_permalink(); ?>" target= _blank class="linkedin"><i class="fa fa-linkedin"></i></a> <?php endif; ?> <?php if (get_option('instagram_link') == 0): ?> <a href="<?php echo 'mailto:enteryour@addresshere.com?subject=Share and Follow&body=' . get_the_permalink(); ?>" target= _blank class="instagram"><i class="fa fa-envelope-o"></i></a> <?php endif; ?> <?php if (get_option('pinterest_link') == 0): ?> <a href="<?php echo '//pinterest.com/pin/create/button/?url=' . get_the_permalink(); ?>" target= _blank class="pinterest"> <i class="fa fa-pinterest"></i></a> <?php endif; ?> </div> <?php } ?> </div> <?php
    • Por Wisley Santos
      olá pessoal estou editando um script e esta dando o seguinte erro
      Fatal error: Call to undefined method Session::getState() in C:\Users\wsa\Desktop\USBWebserver v8.6\root\index.php on line 42
       
      // objects
      $session = new Session;
      $logger = new Logger;
      $db_mapper = new DbMapper;
      $user = new User("", "", "", "", "", "", "");
       
      42 if ($session->getState($session_state)){
      43 $username = $session->getUsername();
      44 $user = $db_mapper->getUser($username);
      }
×

Informação importante

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