Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]problem z include plik sprawdzający
Forum PHP.pl > Forum > Przedszkole
artur1203
Witam wszystkich forumowiczów mam taki problem
postanowiłem oddzielic dwie rzeczy teraz mam połączone w jednym pliku i treść i warunki
i wszystko działa mam duzo stron które mają być zabezpieczone
w tej chwili wygląda to następująco
plik sprawdz.php który sprawdza czy użytkownik jest zalogowany , czy ma opłacony abonament jeśli nie kieruje odpowiednio do strony opłacenia lub logowania
natomiast jesli ktoś jest zalogowany i ma opłacony abonament nie wyświetla treści tylko przeżuca na pierwszą strone zamiast pozostać na tej która ma includa
moje drugie pytanie jak zrobić żeby jak nie jest uzytkownik zalogowany i wejdzie na strone kodowaną jest przeżucany do logowania a póżniej na pierwszą strone portalu zamiast na strone z której był przekierowany

<?php
ob_start();
session_start(); // rozpoczęcie sesji
?>
<?php
$xxx=isset($_SESSION['login']);
include 'inc/db.php'; // połączenie się z bazą danych
$tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
$today1 = date("Y-m-d") ;


if (!isset($_SESSION['login'])) {
header('Location: ../system/logowanie.php ');
}
$wynik=mysql_query("SELECT * FROM $tabela WHERE status2='0' and login='{$_SESSION["login"]}'");

if (mysql_num_rows($wynik) == 1) {
$informacja = mysql_fetch_array($wynik);
header('Location: ../system/logowanie.php ');
} else {
$wynik1 = mysql_query("SELECT * FROM $tabela WHERE status2='1' and login='{$_SESSION["login"]}'");
$row = mysql_fetch_array($wynik1);
if ($row['data3'] < $today1)
{
$wynik = mysql_query("UPDATE $tabela SET status2='0' WHERE login='{$_SESSION['login']}'"); // zapytanie zmieniajace status w bazie w przypadku
header('Location: ../system/logowanie.php ');
}

else
{
echo "Jesteś zalogowany jako: <b>{$_SESSION["login"]}</b> ";
echo "Ważność twojego konta: <b> {$row['data3']} </b> ";
echo '<a href="../system/logowanie.php?wylogowanie=tak"><b>Wyloguj się</b></a>';
// treść strony ktora jest zakodowana
header('Location: ');
}
}
?>

</div>

i plik gdzie jest include sprawdz.php
<?php
include "sprawdz.php"; #sprawdzenie, czy klient ma prawo jeszcze przeglądać strony z części płatnej
?>
jesteś na właściwej stronie
szalek01
A czy w Twoim systemie mógłbym sobie założyć użytkownika "Ktosiek'; DROP TABLE uzytkownik -- " questionmark.gif
artur1203
Cytat(szalek01 @ 28.09.2012, 23:13:24 ) *
A czy w Twoim systemie mógłbym sobie założyć użytkownika "Ktosiek'; DROP TABLE uzytkownik -- " questionmark.gif



nie bardzo rozumiem pytanie questionmark.gif
szalek01
ahh...

zrób sobie kopie bazy
naprawdę zrób kopie bazy i ustaw zmienną

  1. $_SESSION["login"] = "Ktosiek'; DROP TABLE uzytkownik -- ";

artur1203
Cytat(szalek01 @ 28.09.2012, 23:29:41 ) *
ahh...

zrób sobie kopie bazy
naprawdę zrób kopie bazy i ustaw zmienną

  1. $_SESSION["login"] = "Ktosiek'; DROP TABLE uzytkownik -- ";




chciałeś mi pokazać że moj system jest do du...y
a mógłbyś mi pomóc tak żeby było dobrze i bezpiecznie
szalek01
Nic takiego nie napisałem smile.gif, ale chciałem żebyś sam to zauważył. Zaraz napisze co możesz zrobić żeby to zabezpieczyć.
Damonsson
Zrób wcięcia, opakuj to w odpowiedni bbcode, nikt się w tym nie połapie przecież.
szalek01
http://php.net/manual/pl/function.mysql-re...cape-string.php mam nadzieje że nie rozpętam jakiejś wojenki ale jak by co poczytaj o PDO
artur1203
Cytat(szalek01 @ 28.09.2012, 23:47:08 ) *
http://php.net/manual/pl/function.mysql-re...cape-string.php mam nadzieje że nie rozpętam jakiejś wojenki ale jak by co poczytaj o PDO

jestem bardzo początkującym i nie bardzo wiem co mam zrobićquestionmark.gif sad.gif wstydnis.gif
szalek01
Jeśli chodzi o zabezpieczenie tych zapytań w to
  1.  
  2. SELECT * FROM $tabela WHERE status2='1' and login='{mysql_real_escape_string($_SESSION["login"])}'

jak chcesz robić coś dobrze musisz sam przebrnąć przez dokumentując lub poszukać na blogach objaśnień i przykładów
artur1203
Cytat(szalek01 @ 28.09.2012, 23:57:36 ) *
Jeśli chodzi o zabezpieczenie tych zapytań w to
  1.  
  2. SELECT * FROM $tabela WHERE status2='1' and login='{mysql_real_escape_string($_SESSION["login"])}'

jak chcesz robić coś dobrze musisz sam przebrnąć przez dokumentując lub poszukać na blogach objaśnień i przykładów




po wprowadzeniu tych zmian dostałem
Parse error: syntax error, unexpected '"', expecting T_STRING................................/kodowane/sprawdz.php on line 17
szalek01

a tak :
SELECT * FROM $tabela WHERE status2='1' and login='".mysql_real_escape_string($_SESSION["login"])."'
artur1203
Cytat(szalek01 @ 29.09.2012, 00:10:28 ) *
a tak :
SELECT * FROM $tabela WHERE status2='1' and login='".mysql_real_escape_string($_SESSION["login"])."'



zrobiłem tak jak napisałeś ale nadal mam ktośka sad.gif czy wystarczy tylko to dodać czy trzeba więcej questionmark.gif
dzięki za uwagi bede próbował to zrobić jak mi wyjdzie zobaczymy

a wracająć do postu 1 w spawie include pomożecie jak to zrobić
szalek01
Musisz zabezpieczyć każde zapytanie poprzez mysql_real_escape_string ale lepszym rozwiązaniem było by zapoznać się z PDO
artur1203
Cytat(szalek01 @ 29.09.2012, 00:29:56 ) *
Musisz zabezpieczyć każde zapytanie poprzez mysql_real_escape_string ale lepszym rozwiązaniem było by zapoznać się z PDO


rozumiem ze zmienną $_SESSION["login"] zamienić na login='".mysql_real_escape_string($_SESSION["login"])." czy znowu żle zrozumiałem


i wracam do pytania z początku
jak zrobić plik include sprawdzające warunki
działa przy wszystkim tylko nie przy zalogowanym sad.gif
szalek01
poniekąd, w zapytaniach musisz przygotować dane które dodajesz do zapytań, służy do tego funkcja mysql_real_escape_string jednak. Jeśli pobierasz jakieś dane od użytkownika jego login, email czy na przykład frazę którą użytkownik wpisuje w wyszukiwarkę musisz te dane przygotować by nie zrobiły krzywdy bazie danych.


http://www.lonet.eu/php/zabezpieczenie-przed-sql-injection/
http://kacperkolodziej.com/artykuly/webmas...zyc-strone.html
artur1203
Cytat(szalek01 @ 29.09.2012, 00:39:35 ) *
poniekąd, w zapytaniach musisz przygotować dane które dodajesz do zapytań, służy do tego funkcja mysql_real_escape_string jednak. Jeśli pobierasz jakieś dane od użytkownika jego login, email czy na przykład frazę którą użytkownik wpisuje w wyszukiwarkę musisz te dane przygotować by nie zrobiły krzywdy bazie danych.


http://www.lonet.eu/php/zabezpieczenie-przed-sql-injection/
http://kacperkolodziej.com/artykuly/webmas...zyc-strone.html




dzięki za informacje porobie tak jak opisane w postach i dam znać jak poszło
czy jest jakiś sposób sprawdzenia strony czy jest dobrze zabezpieczona questionmark.gif PROSTY
a masz jakiś pomysł na mojego include sad.gif
szalek01
Nie wiem jak inni ale dla mnie ten kod należało by uporządkowawszy. Jeśli uczysz się php, poczytaj o OOP w php o MVC będzie Ci łatwiej.
Co do obecnego podejścia może postaraj się to jakoś tak podzielić.
  1. <?php
  2. $isLogin = isUserLogin(); //true or false
  3. $abonamentOk = iAabonamentOK(); //true or false
  4.  
  5. if(false == $isLogin && false == $abonamentOk)
  6. {
  7. header('Location: script.php/logowanie/abonament');
  8. }
  9. else if(false == $isLogin)
  10. {
  11. header('Location: script.php/logowanie/');
  12. }
  13. else if(false == $abonamentOk)
  14. {
  15. header('Location: script.php/abonament ');
  16. }
  17. else
  18. {
  19.  
  20. }
  21. ?>
artur1203
Dzięki za pomoc szalek01 juz to rozwązałem
mam jeszcze jedno pytanie
jak po przejsciu do logowania i zalogowaniu powrócić do poprzedniej strony

i dodatkowo
pozmieniałem te wiersze odnośnie zabezpieczenia bazy i nadal jak jest umieszczone ktosiek to sie loguje uzytkownik ktosiek
szalek01
1) możesz przekazać sobie parametr w adresie do logowania gdzie ma wrócić po zalogowaniu
2) możesz skorzystać z zmiennej $_SERVER i tam o ile dobrze pamiętam masz REMOTE_HOST czyli adres z skąd użytkownik przyszedł
artur1203
Cytat(szalek01 @ 29.09.2012, 11:32:07 ) *
1) możesz przekazać sobie parametr w adresie do logowania gdzie ma wrócić po zalogowaniu
2) możesz skorzystać z zmiennej $_SERVER i tam o ile dobrze pamiętam masz REMOTE_HOST czyli adres z skąd użytkownik przyszedł



a mam pytanie o praktyczny przykład kodu
szalek01
dry.gif
1) www.cos.pl/logowanie.php?adressBack=jakis_adres.php
2)
  1. <?php
  2. $poprzednioBylemNa = $_SERVER['HTTP_REFERER'];
  3. echo $poprzednioBylemNa;
  4. ?>
artur1203
Cytat(szalek01 @ 29.09.2012, 12:02:34 ) *
dry.gif
1) www.cos.pl/logowanie.php?adressBack=jakis_adres.php
2)
  1. <?php
  2. $poprzednioBylemNa = $_SERVER['HTTP_REFERER'];
  3. echo $poprzednioBylemNa;
  4. ?>




po zastosowaniu tego kodu powyzej przezuca mnie zupełnie gdzie indziej niż powinno
rozumiem ze powinno byc umieszczone w pliku ze skryptem logowania
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.