Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sprawdzenie kodu usuwa sesję
Forum PHP.pl > Forum > PHP
Sahee
Siemka, główkuję już trochę nad tym i nie mam pojęcia co może powodować zamknięcie sesji php:
  1. require_once('inc/system.php');
  2. if(empty($oUser)) header('location: index.php');
  3.  
  4. $co = '.$ilosc. + Pp';
  5. $kod = $_POST['kod'];
  6. $user = $_POST['user'];
  7. if(!empty($_POST)){
  8. if(!isset($_POST['accept'])) $msg = "<p class='error'>Musisz zaakceptować regulamin</p>";
  9. elseif(empty($_POST['kod'])) $msg = "<p class='error'>Musisz podać kod SMS</p>";
  10. elseif(empty($_POST['user'])) $msg = "<p class='error'>Musisz podać nick kupującego</p>";
  11. else {
  12. $a = k;
  13. $params = array(
  14. 'aut_id' => '228418848', //Kod auth_id
  15. 'sms' => $a.$foo, //nazwa usługi
  16. 'code' => $kod, //Kod zwrotny z sms'a
  17. );
  18.  
  19. $data = '?'.http_build_query($params);
  20. $file = 'http://www.serv4web.pl/Api'.$data;
  21. $ch = curl_init($file);
  22. $fp = @fopen("temp.xml", "w");
  23. curl_setopt($ch, CURLOPT_FILE, $fp);
  24. curl_setopt($ch, CURLOPT_HEADER, 0);
  25. curl_exec($ch);
  26. curl_close($ch);
  27. fclose($fp);
  28. $file = "temp.xml";
  29. $plik = fopen($file, "r");
  30. $tresc = fread($plik,1024);
  31. fclose($plik);
  32. preg_match ('/&status=.*?"/is', $tresc, $znalezione);
  33. $id = strpos($znalezione[0], '=');
  34. $odp = substr($znalezione[0], $id + 1);
  35. $odp1 = substr($odp, 0, -1);
  36. $co = $a.$foo;
  37. if ($odp1 = 504){
  38.  
  39. $ilosc = $foo * 5;
  40. mysql_query('UPDATE `sahee_user`.`authme` SET `PP` = `PP` + '.(int)$ilosc.' WHERE `authme`.`login` ="'.mysql_real_escape_string($user).'"');
  41.  
  42. $dni=array('Poniedziałek','Wt','Śr','Czw','Pt','So','Nd');
  43. $miesiace=array('Stycznia','Lutego','Marca','Kwietnia','Maja','Czerwca','Lipca','Sierpnia','Września','Października','Listopada','Grudnia');
  44. $dzien=date('d');
  45. $dn=$dni[date('w')-1];
  46. $mc=$miesiace[date('n')-1];
  47. $rok=date('Y');
  48. file_put_contents('transakcje.txt', '[x] '.$dane['login'].' Kupił graczowi '.$user.': '.$co.' w '.$dzien.', '.$mc.' IP: '.$_SERVER['REMOTE_ADDR'].' '.$rok. "\n" , FILE_APPEND);
  49.  
  50. $msg = "<p class='info'>Tranzakcja zakonczona. Kod zakupu to:".$kod."<br><font color=grenn>Wygenerowano kopie transakcji sukcesem!</font></p>";
  51.  
  52.  
  53. }else{ # gdy kod niepoprawny
  54.  
  55. $msg = ('[xx] '.$params[sms].' Zle podany kod / zuzyty');
  56. }
  57. }
  58. }
nospor
Jakiej sesji?
Sahee
if(empty($oUser)) header('location: index.php'); to tutaj sprawdza czy sesja jest ;D
nospor
Ja tu nie widzę żadnej sesji. Ja tu widzę jedynie sprawdzanie zmiennej $oUser.
Sephirus
Zgadzam się z naszym forumowym Kubusiem - jaka sesja?? Nie pokazujesz nam całej prawdy a poza tym jeśli już przekierowujesz na inną stronę (o ile to nie jest twój zamysł aby kod wykonywał się dalej) proponuje jednak w tym miejscu też zakończyć skrypt...

  1. if(empty($oUser)) {
  2. header('location: index.php');
  3. die;
  4. }


Sahee
zmienna $oUser przetrzymuje sesję, sprawdza czy user jest zalogowany. A jak nie jest to przenosi go do indexu...
Sephirus
Zapewne przypisanie tej "sesji" do tej zmiennej jest w pliku z linijki
  1. require_once('inc/system.php');
- pokaż gdzie i jak startujesz tą sesje, jak przypisujesz do tej zmiennej itd...
Sahee
cały system.php

  1. <?php
  2. require_once('config.php');
  3.  
  4. $polacz = mysql_connect("localhost", "$db_user", "$db_pass") or die('błąd połączenie a hostem');
  5. mysql_select_db($db_nazwa,$polacz) or die('błąd połączenia z bazą');
  6. mysql_query("SET NAMES 'utf8'");
  7.  
  8. function tekst($tekst){
  9. $search = array('@<script[^>]*?>.*?</script>@si', '@<[\/\!]*?[^<>]*?>@si', '@<style[^>]*?>.*?</style>@siU', '@<![\s\S]*?--[ \t\n\r]*>@');
  10. $text = preg_replace($search, '', $tekst);
  11. $arr = array('"',"'","#","//","--");
  12. $tekst = str_replace($arr, '', $tekst);
  13. }
  14.  
  15. if(!isset($_SESSION['user'])) $_SESSION['user'] = 0;
  16. $_SESSION['user'] = (int)$_SESSION['user'];
  17. $oUser = array();
  18.  
  19. if($_SESSION['user'] != 0)
  20. {
  21. $query = mysql_query("select * from authme where id = ".$_SESSION['user']);
  22. $num = mysql_num_rows($query);
  23. if($num == 1)
  24. {
  25. $oUser = mysql_fetch_array($query);
  26. }
  27. else
  28. {
  29. $_SESSION['user'] = 0;
  30. }
  31. }
  32.  
  33. $gra = "";
  34. $menu = "";
  35. $h1 = "";
  36. $msg = "";
  37. $menu = "";
  38.  


A tutaj mam podobny sklep który mi działa w usłudze dotpay:

  1. <?php
  2. require_once('inc/system.php');
  3. if(empty($oUser)) header('location: zalogujsie.php');
  4. $id = xxx; # numer ID konta dotpay
  5. $code = "kod"; #identyfikator usługi np. CNC9
  6. $type = "C1,sms"; # typ konta: 'C1' - to 8 znakowy kod bezobsługowy, 'sms' dla sprawdzania SMSow
  7. $del = 0; # jeżeli kod ma być skasowany od razu po sprawdzeniu to ustaw wartość na 1
  8. $numer = numer; # numer na jaki ma zastac wysłay sms
  9. $ilosc = 12;
  10. $co = "PP12";
  11. $h1 = "12PP 5zł";
  12. $cena = "6.10";
  13.  
  14. if(!empty($_POST)){
  15. if(!isset($_POST['accept'])) $msg = "<p class='error'>Musisz zaakceptować regulamin</p>";
  16. elseif(empty($_POST['kod'])) $msg = "<p class='error'>Musisz podać kod SMS</p>";
  17. elseif(empty($_POST['user'])) $msg = "<p class='error'>Musisz podać nick kupującego</p>";
  18. else {
  19. $kod = $_POST['kod'];
  20. $user = $_POST['user'];
  21. $handle = fopen("http://www.dotpay.pl/check_code.php?&check=".$kod."&id=".$id."&code=".$code."&type=".$type."&del=".$del, 'r');
  22. $status = fgets($handle, 8);
  23. fclose($handle);
  24. if ($status == 0) ($msg = "<p class='error'>Kod niepoprawny!</p>"); # gdy kod niepoprawny
  25. else
  26. { # gdy kod poprawny:
  27. mysql_query('UPDATE `sahee_user`.`authme` SET `PP` = `PP` + '.(int)$ilosc.' WHERE `authme`.`login` ="'.mysql_real_escape_string($user).'"');
  28. #log
  29. $dni=array('Poniedziałek','Wt','Śr','Czw','Pt','So','Nd');
  30. $miesiace=array('Stycznia','Lutego','Marca','Kwietnia','Maja','Czerwca','Lipca','Sierpnia','Września','Października','Listopada','Grudnia');
  31. $dzien=date('d');
  32. $dn=$dni[date('w')-1];
  33. $mc=$miesiace[date('n')-1];
  34. $rok=date('Y');
  35. #log
  36. file_put_contents('transakcje.txt', '[x] '.$oUser['login'].' Kupił graczowi '.$user.': '.$co.' dnia '.$dzien.' '.$mc.' '.$rok.' IP: '.$_SERVER['REMOTE_ADDR']. "\n" , FILE_APPEND);
  37. $msg = "<p class='info'>Tranzakcja zakonczona. Kod zakupu to:".$kod."<br><font color=grenn>Wygenerowano kopie transakcji sukcesem!</font></p>";
  38. }
  39. }
  40. }
  41. require_once('inc/szablon.php');
  42.  
  43. ?>


ref
CuteOne
O rzesz ty w mordkę kopany... najpierw ogarnij kod bo tak to nawet studenci informatyki nie piszą o.O

w system.php
- usuń ob_end_clean i daj go do bootstrapa (zazwyczaj jest nim index.php) to samo z ob_start()
- sprawdź czy $_SESSION cokolwiek zawiera
  1. echo '<pre>';
  2. print_r($_SESSION);
Sahee
Zawiera:
  1. (
  2. [user] => 1
  3. )



Dobra, poradziłem sobie. Kolega wyżej dostają plusika wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.