Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] ukrywanie danych w linku
pijanyadmin
post
Post #1





Grupa: Zarejestrowani
Postów: 128
Pomógł: 1
Dołączył: 24.10.2007

Ostrzeżenie: (0%)
-----


obecnie rekord z bazy jest zamieniany na link i w przegladarce wygląda to tak:

Kod
panel.php?gog=poczta&wiad=odczyt&antylopa&id=52


czyli, autor wiadomość "antylopa" id wiadomość w bazie to "52"

odczyt wiadomość wygląda tak:

  1. <?php
  2. require("connect.php");
  3.  
  4. $login = $_SESSION['id'];
  5.  
  6. $quer = mysql_query("SELECT * FROM `wiadomosci` WHERE `do_kogo` = '$login' ORDER BY `id` DESC");
  7. ?>
  8.  
  9.  
  10. <?php
  11. while ($wiersz = mysql_fetch_array($quer)) 
  12. {
  13. $i++;
  14. $class = ($i%2==1) ? "red" : "czarny";
  15. echo '<div class="'. $class .'";>';
  16. echo '<div class="pok"><a href="panel.php?gog=poczta&wiad=odczyt&'.$wiersz[od_kogo].'&id='.$wiersz[id].'">'.$wiersz[od_kogo].'</a></div>';
  17. echo '<div class="pok2"> | <a href="npanel.php?gog=poczta&pocz=kasuj&id='.$wiersz[id].'">usuń</a></div>';
  18. echo '<div class="pok2"> | '.$wiersz[time].'</div>';
  19. echo '<div class="pok2">'.$wiersz[temat].'</div>';
  20. echo '</div>';
  21. }
  22.  
  23. ?>


po kliknieciu w link który jest już odpowiednio zamieniony następuje przekierowanie do odczytu danej wiadomość

  1. <?php
  2. require("connect.php");
  3.  
  4. $q = mysql_fetch_array(mysql_query("SELECT * FROM `wiadomosci` WHERE `id` = ".$_GET['id']." LIMIT 0,1"));
  5.  
  6.  
  7. echo 'Od: <b>'.$q[od_kogo].'</b> Nadana:<b>'.$q[time].'</b><br />';
  8. echo 'Temat: <b>'.$q[temat].'</b><br />';
  9. echo ''.$q[wiadomosc].'';
  10. echo '<a href="panel.php?gog=poczta&wiad=odpowiedz'.$_SESSION[od_kogo].'"><br />Odpowiedz NA WIADOMOSC</a>';
  11.  
  12.  
  13. ?>


tylko teraz jak to zabezpieczyć odpowiednio aby w adresie przegladarki podczas odczytywania wiadomosc nie było ani informacji o nadawcy ani o ID wiadomosci. Próbowałem to dać "od_kogo" do sesji... ale jak dodać do niej ID wiadomość? czy są jakieś inne sposoby na to?

Ten post edytował pijanyadmin 3.02.2008, 02:42:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nowotny
post
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


To u mnie działa... na samym początku podałeś inne nazwy kolumn i w ogóle inną tabele... :/ a potem ja i tak postawiłem w złym miejscu unseta... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
  1. <?php
  2. $quer = mysql_query("SELECT * FROM `mail` WHERE `odbiorca` = '$login' ORDER BY `id_mail` DESC");
  3.  
  4. unset($_SESSION['wiersze']);
  5. while ($wiersz = mysql_fetch_array($quer)) 
  6. {
  7. $i++;
  8. $class = ($i%2==1) ? "red" : "czarny";
  9. echo '<div class="'. $class .'";>';
  10.  
  11.  
  12. $_SESSION['wiersze'][$i]['id_wiad']=$wiersz['id_mail'];
  13. $_SESSION['wiersze'][$i]['od_kogo']=$wiersz['nadawca'];
  14.  
  15. echo '<div class="pok"><a href="?gog=mail&wiad=odczyt&num='.$i.'">'.$wiersz['nadawca'].'</a></div>';
  16. echo '<div class="pok2"> | <a href="?gog=mail&mg=kasuj&num='.$i.'">usuń</a></div>';
  17. echo '<div class="pok2"> | '.$wiersz['time'].'</div>';
  18. echo '<div class="pok2">'.$wiersz['temat'].'</div>';
  19. echo '</div>';
  20. }
  21. ?>


  1. <?php
  2. $num=$_GET['num'];
  3. $ids=$_SESSION['wiersze'][$num]['id_wiad'];
  4. $od_kogo=$_SESSION['wiersze'][$num]['od_kogo'];
  5.  
  6. $q = mysql_fetch_array(mysql_query("SELECT * FROM `mail` WHERE `id_mail` = ".$ids." LIMIT 0,1"));
  7.  
  8. echo 'Od: <b>'.$q[nadawca].'</b> Nadana:<b>'.$q['time'].'</b><br />';
  9. echo 'Temat: <b>'.$q['temat'].'</b><br />';
  10. echo ''.$q['wiadomosc'];
  11. ?>


Z resztą, nie rozumiem po jakiego grzyba pierwotnie przesyłałeś nazwę użytkownika w URLu... jak masz id to resztę możesz sobie wyciągnąć z bazy... dodatkowo to dosyć niebezpieczne rozwiązanie...

Aaa, i przy okazji: datę do bazy polecam sobie zapisywać w postaci uniksowego timestampa albo w tym Mysqlowym formacie... to co teraz masz bedzie bardzo trudno obrabiać...

Ten post edytował nowotny 4.02.2008, 11:51:05
Go to the top of the page
+Quote Post
pijanyadmin
post
Post #3





Grupa: Zarejestrowani
Postów: 128
Pomógł: 1
Dołączył: 24.10.2007

Ostrzeżenie: (0%)
-----


Cytat(nowotny @ 4.02.2008, 11:33:21 ) *
Z resztą, nie rozumiem po jakiego grzyba pierwotnie przesyłałeś nazwę użytkownika w URLu... jak masz id to resztę możesz sobie wyciągnąć z bazy... dodatkowo to dosyć niebezpieczne rozwiązanie...


Z prostego powodu, mam problem ze zmianą sesji aby na podstawie id, były odczytywana reszta danych, teraz jest tak:

  1. <?php
  2. if(isset($_POST['user']) && isset($_POST['pass'])) {
  3. $login = htmlspecialchars($_POST['user']);
  4. $haslo = md5(htmlspecialchars($_POST['pass']));
  5. $q = mysql_query("SELECT * FROM userdata WHERE haslo = '$haslo' AND login = '$login' LIMIT 1"); 
  6. if(!mysql_num_rows($q)) {
  7. echo 'Niepoprawne Login lub Hasło'; exit;
  8. return 0;
  9. }
  10.  
  11. $_SESSION['logon'] = 1;
  12. $_SESSION['login'] = $_POST['user'];
  13. $_SESSION['password'] = $_POST['pass'];
  14. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  15.  
  16. return 1;
  17. }
  18.  if(!isset($_SESSION['logon']) || !isset($_SESSION['login']) || !isset($_SESSION['password']) || !isset($_SESSION['ip'])) {
  19. // echo "3";
  20. return 0;
  21. }
  22. $login = $_SESSION['login'];
  23. $password = $_SESSION['password'];
  24. $ip = $_SESSION['ip'];
  25.  
  26. if($_SERVER['REMOTE_ADDR'] != $ip) {
  27. // echo "4";
  28. return 0;
  29. }
  30.  
  31.  
  32.  if($_SESSION['logon'] == "1") { 
  33.  return 1;
  34. } 
  35. else {
  36. return 0;
  37. }
  38. ?>


czyli odebranie danych z formularza, porównanie loginu i hasła z bazą, oraz przekierowanie do odpowiedniej storny gdzie:

  1. <?php
  2. require_once("functions.php");
  3. require_once("connect.php");
  4.  
  5. if(!logon()) {
  6. resetsession();
  7. movetosite('index.php?sdd=logowanie');
  8. exit();
  9. }
  10.  
  11.  
  12. $login = $_SESSION['login'];
  13.  
  14. $query = mysql_query("SELECT * FROM userdata WHERE login = '$login'");
  15. $dane = mysql_fetch_array($query);
  16. $login = $dane[login];
  17. $email = $dane[email];
  18. ?>


czyli na postawie loginu z sesji, porównanie go z bazą i odpowiednio przypisane dane do tego, w razie jakieś błedu/braku sesji przekierowanie do odpowieneij strony, w tym przypadku "'index.php?sdd=logowanie"

i poprostu nie wiem jak zamienic 
Kod
$login = $_SESSION['login'];
na
Kod
$ld = $_SESSION['id'];


a potem odczytać to jako
Kod
$query = mysql_query("SELECT * FROM userdata WHERE id = '$id'");
Go to the top of the page
+Quote Post

Posty w temacie
- pijanyadmin   [php] ukrywanie danych w linku   3.02.2008, 02:16:26
- - kurt   A nie możesz po prostu zarejestrować zmiennej sesy...   3.02.2008, 09:42:51
- - nowotny   Możesz sobie zrobić tak: [PHP] pobierz, plaintext ...   3.02.2008, 12:24:53
- - pijanyadmin   emm pozmieniałem z id na id_wiad żeby si...   3.02.2008, 12:51:25
|- - nowotny   Cytat(pijanyadmin @ 3.02.2008, 12:51...   3.02.2008, 13:01:15
- - pijanyadmin   nie zapomniałem sesja jest jak najbardziej, tylko...   3.02.2008, 13:06:00
|- - nowotny   Cytat(pijanyadmin @ 3.02.2008, 13:06...   3.02.2008, 13:13:04
- - pijanyadmin   KodArray ( [4] => Array ( ...   3.02.2008, 13:59:40
- - nowotny   No to nie wiem... kombinuj i szukaj błędu... BTW...   3.02.2008, 14:10:46
- - pijanyadmin   jeszcze raz, nie poddałem się i prawie j...   4.02.2008, 01:58:47
|- - nowotny   Spróbuj dostawić ciapki: [PHP] pobierz, plaintext ...   4.02.2008, 03:01:41
- - pijanyadmin   Baza [SQL] pobierz, plaintext CREATE TABLE IF NOT...   4.02.2008, 10:54:57
- - nowotny   Czy to co jest 2 posty wyżej to jest cały skrypt.....   4.02.2008, 11:15:57
- - pijanyadmin   w teorii to mają być dane... emm racja t...   4.02.2008, 11:29:42
- - nowotny   To u mnie działa... na samym początku podałeś inne...   4.02.2008, 11:33:21
|- - pijanyadmin   Cytat(nowotny @ 4.02.2008, 11:33:21 )...   4.02.2008, 18:57:50
- - nowotny   A tak nie może być...? [PHP] pobierz, plaintext ...   4.02.2008, 19:26:50
- - pijanyadmin   emm a jak wtedy mam to odczytać po zalogowaniu? [...   4.02.2008, 19:36:48
- - nowotny   No tak, nie...? [PHP] pobierz, plaintext <?php$...   4.02.2008, 20:08:07
- - pijanyadmin   emm ok mój błąd, tylko że teraz si...   4.02.2008, 20:38:33
- - nowotny   Sorry, ale teraz to już kompletnie cie nie rozumie...   4.02.2008, 20:52:15
- - pijanyadmin   nie działa odczyt wiadomości, czyli nie odczytuje ...   4.02.2008, 21:04:35
- - nowotny   Ja widzę że się nie dogadamy... jak chcesz skonta...   4.02.2008, 21:14:45
- - pijanyadmin   chodzi o to podałeś mi dobre rozwiązanie do odczy...   4.02.2008, 21:23:22


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 22:11