Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]2 formularze, probelm
Forum PHP.pl > Forum > Przedszkole
peter13135
no więc robie w celach edukacyjnych prosty skrypt bloga,
teraz chce zrobić skrypt który by dodawał pliki do bazy.
oto kod php
  1. <?php
  2. Hasło  :
  3.  
  4.  
  5.  
  6.  
  7.  
  8. include 'config.php';
  9. $password=md5($password);
  10. if(!($password == $hasloadmina))
  11. {
  12. }
  13.  
  14.  
  15. echo &#092;"
  16.  
  17.  
  18.  
  19.  
  20.  
  21. name  :
  22.  
  23. tresc  :
  24.  
  25.  
  26.  
  27. &#092;";
  28.  
  29.  
  30. include 'config.php';
  31.  
  32. @$db = mysql_pconnect($host, $user, $pass);
  33. if (!$db) 
  34.      { 
  35.      print &#092;"Nie można nawiązać połączenia z bazą danych\";
  36.     exit;
  37.     }
  38.  
  39. mysql_select_db($dbname);
  40.  
  41. $query = &#092;"select * from blog\"; 
  42. $result = mysql_query($query); 
  43.  $num_results = mysql_num_rows($result); 
  44.  
  45. $id = $num_results+1;
  46.  
  47.  
  48.  
  49. if (!$id || !$name || !$tresc)
  50.  
  51.  {
  52.  
  53.     exit;
  54.  }
  55.  
  56. $id = addslashes($id); 
  57.  $name = addslashes($name);
  58. $tresc = addslashes($tresc);
  59.  
  60.  
  61.  
  62. $query = &#092;"insert into blog values ('\".$id.\"', '\".$name.\"', '\".$tresc.\"')\";
  63. $result = mysql_query($query);
  64.  
  65. if ($result)
  66. print &#092;"wpis \".$name.\" został dodany do bazy danych.\";
  67. else
  68. {exit;}
  69.  
  70. ?>

w pliku config.php znajdują sie dane do połączenia z bazą oraz $hasloadmina='hash_md5';
ten skrypt niedziała tak jak ja bym chciał, 
na początku wyświetla sie pierwszy formularz w którym trzeba wpisać hasło, jeśli sie wpisze złe hasło to sie stronka tylko odświerza, jesli wpisze prawidłowe dane- wyświetla drugi formularz w którym wpisuje sie dane które po kliknęciu 'click' powinny sie zapisać w bazie danych,
jednak nic takiego sie niedzieje, po wpisaniu danych do drugirgo formularza i kliknęciu, wyświetla sie tylko pierwszy formularz gdzie wpisuje sie hasło.

przepraszam że mało gramatycznie to napisałem ;]
l0ud
Odnoś się poprawnie do zmiennych z formularza - nie bezpośrednio, a poprzez $_POST['nazwa_zmiennej']
peter13135
napisałem takie coś
  1. <?php
  2. $name=$_POST['name'];
  3. $tresc=$_POST['tresc'];
  4. ?>

i nic to nie pomogło
//edit
dodam że jeśli do adresu dopisze ?password=[haslo]
to skrypt działa poprawnie
nevt
Cytat
dodam że jeśli do adresu dopisze ?password=[haslo]
to skrypt działa poprawnie

a ja dodam, że chyba czytać nie umiesz, cudzego kodu zresztą, bo gdybyś sam pisał, wiedziałbyś po co jest fragment:
  1. <?php
  2. $password=md5($password);
  3. if(!($password == $hasloadmina))
  4. {
  5. }
  6. ?>

EDIT: i dodaj do tematu tag wymagany przez reguły publikowania na forum Przedszkole, inaczej temat zostanie zamknięty.
peter13135
akurat ten fragment kody jest mój, niewiem dlaczego uważasz że niejest mój ;]
poprostu w pliku config.php jest zakodowane haslo admina (md5)
więc najpierw skrypt koduje do md5 hasło które wpisał użytkowink w formularzu i jeśli niejest ono takie same jak w pliku config to skrypt sie kończy
ja wpisuje dobre hasło, i po jego wpisaniu wyświetla sie drugi formularz, jednak po wpisaniu jakichś danych w drugi formularz , i wcisnieciu enter, pokazuje sie tylko pierwszy formularz
(tak tak wiem wiem, kiepsko u mnie z gamatyką i ortografią)

edit//
cos zauważyłem że ten mój pierwszy kod php albo sie źle zapisał albo był w fazie modyfikacji.. w każdym bądź razie z problemem już sobie poradziłem
temat do zamknięcia
nevt
wybacz - moja ocena wynikała z twojego komentarza - widocznie źle go zrozumiałem.
problem był wielokrotnie wałkowany. po zalogowaniu się, nigdzie nie zapamiętujesz tego faktu, albo w sesji, albo w ukrytym polu drugiego formularza. pomysl nad tym przez moment (w uproszczeniu):
1. pierwsze uruchomienie - wyświetlasz formularz logowania - $password jest puste więc skrypt kończy działanie.
2. drugie uruchomienie - wyświetlasz formularz logowania - $password jest ok. (przesłane z poprzedniego uruchomienia) więc wyświetlasz drugi formularz z danymi do bazy ...
3. trzecie uruchomienie - wysietlasz formularz logowania, $password jest znowu puste (dlatego że 3 uruchomienie nastepuje na skutek przeslania formularza nr 2 w ktorym nie ma pola password) więc skrypt kończy działanie.

masz dwa wyjścia, albo w sesji lub ciasteczku po drugim uruchomieniu zapamietujesz że user jest zalogowany, albo do drugiego formularza dodajesz ukryte pola zawiwerające kopie danych przesłanych z pierwszego formularza. polecam pierwsze rozwiązanie bo drugie jest podatne na wiele rodzajów ataków...
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.