Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przenoszenie zmiennych między stronami
Forum PHP.pl > Forum > Przedszkole
zeetor
Wiatm

Mam 5 zmiennych którym przypisane sa wartości losowe...
...i teraz chcialbym zrobic na dole przycisk zatwierdz po ktorym wartosci zostaną zapisane automatrycznie do bazy...
...na razie robię to tak - jako ze potrafię przeżucać zmienne za pomocą adresu http// to mój "przycisk" jest linkiem który przenosi mnie na stronę gdzie zmienne sa dodawane do bazy...
...no ale w takim czyms jest łatwo majstrować i np. liczba 5 moze zostać zamieniona przez kogos na 100...

...

prosze o pomoc

dz i pozdr
luck
Skoro zależy Ci na tym, żeby te liczby nie były zmienione, to możesz je zapisać np. w jakiejś tablicy trzymanej w sesji i wyświetlić userowi do zatwierdzenia. Jeśli kliknie przycisk zapisu do bazy, to liczby odczytasz z $_SESSION i masz (prawie) 100% pewności, że liczby się nie zmieniły.
ikssde
Mozesz poprostu użyć innej metody wysyłania danych, czyli POST. Wtedy te zmienne które są generowane nie bedą przekazywane w postaci linku (http://www.mojastrona.pl/?zmienna=1) tylko w tablicy $_POST. Dzięki temu użytkownik nie bedzie mógł podejrzeć tych zmiennych, a co za tym idzie ich zmodyfikować. Jeśli o to Ci chodziło to by była najlepsza metoda. Chyba ze masz na mysli cos innego.
luck
Cytat(ikssde @ 23.08.2008, 16:38:55 ) *
Mozesz poprostu użyć innej metody wysyłania danych, czyli POST. Wtedy te zmienne które są generowane nie bedą przekazywane w postaci linku (http://www.mojastrona.pl/?zmienna=1) tylko w tablicy $_POST. Dzięki temu użytkownik nie bedzie mógł podejrzeć tych zmiennych, a co za tym idzie ich zmodyfikować. Jeśli o to Ci chodziło to by była najlepsza metoda. Chyba ze masz na mysli cos innego.

Zainstaluj sobie rozszerzenie do FF Webdeveloper i zobaczysz jak fajnie możesz zmieniać w formularzach wszystko, co Ci się tylko spodoba. To, że dane przekazywane są przez POST nie oznacza wcale, że nie można ich zmodyfikować.
ikssde
Napisałeś to tak jak by użytkownik od samego początku wiedział, że przez formularz oprócz wprowadzonych danych są przekazywane jakies istotne, ukryte informacje. Oczywiście wszystkie zabezpieczenia da sie złamać, ale jeżeli nie jest mu potrzebne 100% zabezpieczenie przed modyfikacją tych danych, to uważam, że ten sposób byłby dobry. Oczywiście jest wiele innych metod. Tak jak już kolega wcześniej wspominał można użyć sesji, ale żeby były bezpieczne to też trzeba je jakos zabezpieczyć (możesz zmienić katalog w którym zmienne sesyjne są przechowywane), można też połączyć kilka metod. Możesz przesłać dane przy pomocy metody POST nastepnie dodatkowo sprawdzić zmienne sesyjne, a nawet odczytać je sobie z ciasteczek. Mozna zrobić to na wiele sposobów, a wszystko zależy od tego jakie autor ma wymagania.

EDIT :

Możesz również te zmienne zapisać do pliku na swoim serwerze, a później w kolejnym etapie weryfikacji odczytać je z tego pliku. W takim przypadku, przy odpowiednim zabezpieczeniu tego pliku nie ma możliwości zmiany przekazywanych danych.
zeetor
... mam juz "gotowe" zmienne (w PHP) np. takie:
$aa=10;
$bb=20;
$cc=30;
...i jak je przesłać metoda POST ?

dz za pomoc i pozdr
ikssde
Musisz sobie stworzyc odpowiednie pola formularza i przekazac do nich zmienne przez php :

CODE

<?php

$aa=10;
$bb=20;
$cc=30;

echo "<input type=\"hidden\" name=\"zmienna1\" value=\"$aa\">";
echo "<input type=\"hidden\" name=\"zmienna2\" value=\"$bb"\>";
echo "<input type=\"hidden\" name=\"zmienna3\" value=\"$cc\">";

?>


Jeszcze tylko wystarczy zmienić metode przekazywania formularza :

CODE

<form name="..." action="..." method="post">


Odbierając zmienne korzystasz z tablicy $_POST.
W tym wypadku chcac odebrac zmienne piszesz sobie taki kod.

CODE

$cos1 = $_POST['zmienna1'];
$cos2 = $_POST['zmienna2'];
$cos3 = $_POST['zmienna3'];


Dodatkowo dla bezpieczeństwa powinieneś filtrować te dane, gdyby komuś przyszło do głowy przesłać Ci coś innego.
Możesz skorzystać z funkcji, ktore zrobia to za Ciebie, np. strip_tags(), htmlspecialchars(), trim()
luck
Żeby mimo wszystko zeetor miał alternatywę winksmiley.jpg

Przypisanie zmiennych:
  1. <?php
  2. $_SESSION['numbers'] = array('aa' => $aa, 'bb' => $bb, 'cc' => $cc);
  3. ?>

Odebranie zmiennych po zatwierdzeniu:
  1. <?php
  2. $aa = $_SESSION['aa'];
  3. $bb = $_SESSION['bb'];
  4. ?>

Uważam że nie ma sensu bawić się w sztuczne cookies, zapisy do pliku czy bazy danych, skoro PHP dysponuje wbudowanym mechanizmem, który automatycznie zwalnia programistę z tworzenia ukrytych pól formularzy, walidacji, czyszczenia zmiennych itp. Jakkolwiek, zeetor sam wybierze co w jego przypadku sprawdzi się lepiej smile.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.