PHP logowanie za pomoca $_SESSION problem z szybkim automatycznym wylogowaniem.
Ostatnio zmodyfikowano 2014-09-24 21:59
Haker123 Temat założony przez niniejszego użytkownika |
PHP logowanie za pomoca $_SESSION problem z szybkim automatycznym wylogowaniem. » 2014-09-20 22:56:12 Witam. Na swojej stronie mam zrobione logowanie za pomoca session. Wszystlo ladnie dziala ale kiedy pisze jakis dlugi komentarz lub opis to po wyslaniu tresci okazuje sie ze mnie wylogowalo i trzeba wszystko od nowa pisac. Testowalem to na localhost i nie mialem takiego problemu ale po umieszczeniu strony na internecie taki problem sie pojawil. Sesje startuje w odzielnym pliku ktory jest dodany do index.php session_start(); ......... // jeśli nie ma jeszcze sesji "logged" to wypełniamy je domyślnymi danymi if(!isset($_SESSION['logged'])) { $_SESSION['logged'] = false; add_visit() ; //+1 do wizyt na stronie }
|
|
Winner_Of_Death |
» 2014-09-21 08:51:07 Możesz trochę lepiej opisać problem, bądź dać nieco więcej kodu? Ten kod który podałeś jest sprawny (oczywiście jeżeli masz sprawną funkcję add_visit(). Może include'ujesz pliki w złej kolejności i np. najpierw jest ten odpowiedzialny za dodawanie komentarza, a potem ten odpowiedzialny za start_session()? |
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2014-09-21 21:07:49 Jedyny plik do jakiego dodaje config.php (plik z start_sesion()) to index.php i wyglada on tak <!DOCTYPE html>
<?php include 'config.php' ; ?>
<html prefix="og: http://ogp.me/ns#">
<head>
<title>Adrian Rojek</title>
<!-- kodowanie znaków - utf8, dzięki czemu możemy wyświetlić, np. polskie znaki --> <meta charset="utf-8"> <meta property="og:title" content="Programowanie" /> <meta property="og:type" content="website" /> <meta property="og:url" content="http://adrian-rojek.cba.pl/index.php?type=home" /> <meta property="og:description" content="Blog z programami mojego autorstwa." /> <!-- OPIS STRONY -- <meta name="description" content="Blog z programami mojego autorstwa."> <!-- HASLA DLA WYSZUKIWARKI -- <meta name="keywords" content="HTML,CSS,PHP,CPP,C++,ALLEGRO,QT,OpenGL,UNITY"> <!-- AUTOR STRONY -- <meta name="author" content="Adrian Rojek"> --> <!-- HEADER --> <link href="css/js-image-slider.css" rel="stylesheet" type="text/css" /> <script src="js/js-image-slider.js" type="text/javascript"></script> <link href="css/generic.css" rel="stylesheet" type="text/css" /> <!-- --> <link rel="stylesheet" href="css/style.css" type="text/css" /> <script type="text/javascript">
<!-- FUNKCJA DO LADOWANIA STRONY GLOWNEJ PO ODPALENIU STRONY --> function Home() { populateSlider() ; } <!-- FUNKCJE DLA HEADER --> function populateSlider() { //Note: If the slider container has been set as invisible(e.g. display:none;), make sure set it visible before reload the imageSlider setSliderMarkup(); imageSlider.reload(); } function setSliderMarkup() { var sliderFrame = document.getElementById("sliderFrame"); sliderFrame.innerHTML = '<div id="slider"><img src="Slider/image-slider-1.png" alt="#slider1" />' + '<img src="Slider/image-slider-2.png" alt="#slider2" /><img src="Slider/image-slider-3.png" alt="#slider3" />' + '<img src="Slider/image-slider-4.png" alt="#slider4" /></div>'; } </script> <!-- SKRYPT DO URUCHAMIANIA STRON PHP W DIV --> <script src=" http://code.jquery.com/jquery.min.js " type="text/javascript"> </script>
</head>
<body onload="Home();">
<div id="page"> <br /> <header id="header"> <div id="sliderFrame"></div> <div id="slider1" style="display: none;"> <a href="index.php?type=cpp/Snake/snake&ID=7">SNAKE. Gra na krótkie wolne chwile.</a> </div> <div id="slider2" style="display: none;"> <a href="index.php?type=php/Strona/strona&ID=3">Opis strony na której jesteś.</a> </div> <div id="slider3" style="display: none;"> <a href="index.php?type=cpp/MIX/MIX&ID=9">MIX. Kółko i krzyżyk dla dwóch i labirynt.</a> </div> <div id="slider4" style="display: none;"> <a href="index.php?type=php/BazaFilmow/film&ID=2">Baza filmów z aplikacją do jej obsługi.</a> </div> </header> <!-- end title --> <nav id="menu"> <!-- <h3> MENU </h3> --> <ul> <li><a href="index.php?type=home">Strona GŁówna</a></li> <li><a href="index.php?type=cpp">CPP</a></li> <li><a href="index.php?type=php">PHP / MYSQL / HTML</a></li> <li><a href="index.php?type=contactform">Kontakt</a></li> <li><a href="index.php?type=about">O Blogu</a></li> </ul> <div id="visit"> <?php wypisz_visit() ; ?> </div> <br /> <br /> <?php if( $_SESSION['logged'] ) { ?> <button type="button" onclick="javascript:window.location.href='logout.php'; "> WYLOGUJ </button> <?php } ?> </nav> <!-- end menu --> <div id="content"> <?php // zmienna $id przekazana metoda GET @$type = $_GET['type'];
// sprawdzamy czy zmienna $id nie jest pusta if( isset( $type ) ) { $a = $type.".php" ; // sprawdzamy czy plik o danej nazwie (php) oraz dopuszczalnych znakach (litera oraz -) istnieje if( (file_exists("$a") ) && (preg_match('|^[[:alpha:]-/]+$|', $type) ) ) { include "$a"; } // jezeli plik nie istnieje wyswietla się komunikat else include '404.php'; } // jezeli zmienna $id jest pusta wyswietla się strona glowna else include 'home.php'; ?> </div> <!-- end content --> </div> <!-- end page -->
</body>
</html>
Jeden z plikow do ktorych mozna dodawac komentarze (jest on indludowany w index.php w <div id="content"> <?php db_connect() ; $id = $_GET['ID'] ; //POBIERAMY WPIS $zapytanie ="SELECT * FROM wpisy WHERE ID_wpis = $id " ; if( !$result = $db->query( $zapytanie ) ) { printf("Połączenie nie udane "); exit; } if( $result->num_rows > 0 ) { $row = $result->fetch_assoc() ; ?>
<div id="strona"> <h1 id="tytul"> <?php echo $row['title'] ?> </h1> <time id="date"> <?php echo $row['date'] ?> </time> <p id="tresc"> <?php echo $row['text'] ?> </p> <br /><br /><br /> <?php $result->free() ; ?> <h2> KOMENTARZE </h2> <?php $zapytanie = "SELECT * FROM komentarz_wpis LEFT JOIN nick ON komentarz_wpis.ID_nick = nick.ID_nick WHERE ID_wpis = $id ORDER BY date DESC" ; $result = $db->query( $zapytanie ) ; if( $result->num_rows > 0 ) { while( $row = $result->fetch_assoc() ) { ?> <div id="comment"> <?php if( $row['admin'] == 1 ) { echo "<h3 class=\"admin\" > Adrian Rojek </h3>" ; } else { echo "<h3>".$row['Nick']."</h3>" ; } ?> <time id="date"> <?php echo $row['date'] ?> </time> <p id="text"> <?php echo $row['text'] ?> </p> </div> <!-- <div id="comment"> --> <?php } } else { echo "<div id=\"comment\"></div>" ; } echo "<br /> <br />" ; $result->free() ; ?> <div id="form"> <form id="formm" action="add_comment_wpis.php" method="post"> <?php if( $_SESSION['logged'] ) { ?><input type="hidden" name="admin" value="1" > <?php } else { ?> <label for="form_nick">NICK*</label> <br /> <input id="form_nick" name="form_nick" type="text" size="20"> <br /><br /> <?php } ?> <label for="form_comment">TREŚĆ KOMENTARZA*</label> <br /> <textarea id="form_comment" name="form_comment" rows="15" cols="80"> </textarea> <br /> <br /> <input type="hidden" name="ID" value="<?php echo $id ?>" > <input type="submit" name="submit" value="WYŚLIJ"> </form> </div> <!-- form --> </div> <!-- STRONA --> <?php } else include '404.php'; $db->close() ; ?>
A tak wyglada add_comment_wpis.php <?php
include 'config.php' ;
db_connect() ; $data = date( " Y-m-d H:i:s" ) ; $id = $_POST['ID'] ; if( $_SESSION['logged'] ) { if( isset( $_POST['form_comment'] ) ) { $text = $_POST['form_comment'] ; $zapytanie ="INSERT INTO komentarz_wpis SET text='$text' , date='$data' , admin='1' , ID_wpis='$id'" ; $db->query( $zapytanie ) ; } } else { if( isset( $_POST['form_comment'] ) && isset( $_POST['form_nick'] ) ) { $nick = $_POST['form_nick'] ; $text = $_POST['form_comment'] ; $zapytanie ="SELECT * FROM nick WHERE Nick='$nick' " ; $result = $db->query( $zapytanie ) ; if( $result->num_rows > 0 ) { $row = $result->fetch_assoc() ; $id_nick = $row['ID_nick'] ; $zapytanie ="INSERT INTO komentarz_wpis SET text='$text' , date='$data' , ID_nick='$id_nick' , ID_wpis='$id'" ; $db->query( $zapytanie ) ; $result->free() ; } else { $zapytanie ="INSERT INTO nick SET Nick='$nick'" ; $db->query( $zapytanie ) ; $zapytanie ="SELECT * FROM nick WHERE Nick='$nick'" ; $result = $db->query( $zapytanie ) ; if( $result->num_rows > 0 ) { $row = $result->fetch_assoc() ; $id_nick = $row['ID_nick'] ; $zapytanie ="INSERT INTO komentarz_wpis SET text='$text' , date='$data' , ID_nick='$id_nick' , ID_wpis='$id'" ; $db->query( $zapytanie ) ; $result->free() ; } } }//if( isset( $_POST['form_comment'] ) && isset( $_POST['form_nick'] ) ) }// else od if( $_SESSION['logged'] ) $db->close() ; //AUTOMATYCZNIE PRZECHODZIMY NA GLOWNA STRONE //$dalej = "http://localhost/xampp/moje/mojastrona/" ; //header("Location: $dalej"); //header("window.history.back()"); ?> <script type="text/javascript"> window.location.href = "index.php?type=wpis&ID=<?php echo $id ;?> " ; </script>
Plik add_comment_wpis.php otwiera sie nie w index.php dlatego dodaje do niego config.php. EDIT: add_visit() wyglada tak function add_visit() { db_connect() ;
global $db ; $db->query( "UPDATE visit SET all_visit = all_visit+1 WHERE ID_visit = 1 " ); db_close() ; }
|
|
maly |
» 2014-09-23 11:13:27 Po pierwsze używaj error_reporting(E_ALL);. Po drugie session_start() musi być użyte wcześniej niż cokolwiek wyślesz, więc takie coś jest złe <!DOCTYPE html>
<?php include 'config.php' ; ?> ...
spróbuj tak <?php include 'config.php' ; ?> <!DOCTYPE html> ... |
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2014-09-24 21:59:26 Przepraszam ze nie odpisywalem ale mialem problem z internetem. Jutro przetestuje to i powiem czy dziala tak jak trzeba.
EDIT.
Przeniesienie <?php include 'config.php' ; ?> przed <!DOCTYPE html> pomoglo. Dzieki za pomoc ;] |
|
« 1 » |