Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> funkcja php jako adres na który formularz wysyła dane
Asmox
post
Post #1





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Trochę dziwnie brzmi temat ale ogólnie rzecz biorąc chodzi mi o to, jak zrobić, żeby formularz wysyłał dane do pewnej funkcji php.
Załóżmy, że w nagłówku jest już odpowiednie dołączenie pliku
  1. <?php include "skrypty.php" ?>
  2. </head>


zauważyłem, że zrobienie po prostu
  1. <form method="POST" action="funkcja()"></form>

nie działa. Co robić>
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Bo tak nie zadziała. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

PHP działa po stronie serwera, po stronie klienta już nie.

Do poczytania: http://www.w3schools.com/php/php_forms.asp
Go to the top of the page
+Quote Post
Asmox
post
Post #3





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


No ale przecież dołączam plik z funkcjami, więc co jest nie tak? Sorka ale trochę nie kumam
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A masz te funkcje, jak podejrzysz źródło strony z formularzem? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

PHP wykonuje się TYLKO po stronie serwera.
Go to the top of the page
+Quote Post
bim2
post
Post #5





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


<form action="functions.php?nameFunction=funkcja">

i plik functions.php
  1. <?php
  2. {$_GET['nameFunction']}();
  3. ?>

Ale może to być niebezpieczne, bo teraz każdy może wywołać jaką chce funkcję u ciebie na serwerze.
Go to the top of the page
+Quote Post
pyro
post
Post #6





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(bim2 @ 18.01.2009, 23:26:13 ) *
<form action="functions.php?nameFunction=funkcja">

i plik functions.php
  1. <?php
  2. {$_GET['nameFunction']}();
  3. ?>

Ale może to być niebezpieczne, bo teraz każdy może wywołać jaką chce funkcję u ciebie na serwerze.

hmm? co to za jakis dziwny zapis wywołania funkcji? bim2, nie wydaje mi się, żeby to mogło działać, zamiast tego mozna uzyc call_user_func()" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
Asmox
post
Post #7





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Aha dzięki. Bo chodzi mi przede wszystkim o to, żeby..... no zobaczcie topic
Temat: odbieranie_informacji_z_innego_skryptu_i_wykorzystywanie_go
P.S. Jak znaleźć ID tematu?

Ten post edytował Asmox 19.01.2009, 13:01:55
Go to the top of the page
+Quote Post
Tarcil
post
Post #8





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 24.11.2006

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


Witam

A czy w tym przypadku nie zrobić po prostu tak:

plik funkcja.php
  1. <?php
  2.  
  3. $a = cos($_POST['arg1']);
  4. $b = cos($_POST['arg2']);
  5. ...
  6. header("Location: <a href=\"http://www.gdzies.pl");
  7.  
  8. ?>


plik form.html
  1. <form method="post" action="funkcja.php">
  2. ...
  3. </form>


To wykona funkcję zapisaną w pliku funkcja.php i przeniesie z powrotem do strony... Chociaż wydaje mi się to mało eleganckie... chyba lepiej zapisać tą funkcję i wywołać ją w opdowiednim miejscu po sprawdzeniu przesłanych przez _POST danych...

Pozdrawiam

Ten post edytował Tarcil 19.01.2009, 15:57:59
Go to the top of the page
+Quote Post
bim2
post
Post #9





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


@pyro
jak najbardziej zadziała (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Asmox
post
Post #10





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Oczywiście, sam tak zrobiłem (to z formularzem). Tylko jak taki skrypt z innego źródła mógłby po powrocie na stronę główną zmienić klasę akapitu. Tutaj jego kod razem z formularzem:
  1. <form id="mini_login" method="post" action="skrypty/php/zaloguj.php">
  2. <div class="formsection">
  3. <label for="user_name">Użytkownik</label>
  4. <input name="mail" type="text" size="10" />
  5. </div>
  6. <div class="formsection">
  7. <label for="password">Hasło</label>
  8. <input name="pass" type="password" size="10" />
  9. </div>
  10. <div class="formsection">
  11. <input type="submit" value="Loguj" />
  12. </div>
  13. <div class="formsection">
  14. <p class="">Nieznana nazwa użytkonika i/lub hasło</p>
  15. <ul>
  16. <li><a href="#">Zapomniałeś hasła?</a></li>
  17. </ul>
  18. </div>
  19. </form>

Może gdyby zamieścić w nim jakiś kod php...?
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Może gdyby zamieścić w nim jakiś kod php...?

Yhy:
  1. <?PHP if($warunek){ echo ' class="klasa"'; }; ?>


Albo Javascript.
Go to the top of the page
+Quote Post
pyro
post
Post #12





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(bim2 @ 19.01.2009, 16:53:32 ) *
@pyro
jak najbardziej zadziała (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Aż sprawdziłem u siebie... nie działa...
Go to the top of the page
+Quote Post
Asmox
post
Post #13





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


  1. <?PHP if($warunek){ echo ' class="klasa"'; }; ?>

O to może zadziałać. Tylko że jeśli się z tym nic nie zrobi, to cały czas klasa będzie klasą (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) .
Czy takie coś przejdzie?
  1. <?php
  2. if ($wrong==true) {
  3. echo "<p class=\"error\">";
  4. $wrong=false;
  5. }
  6. else {
  7. echo "<p class=\"\">";
  8. }
  9. ?>

Tylko jak zrobić, żeby ten skrypt co odbiera dane mógł nadać wartość funkcji....
Może by wykorzystać zmienną sesji? Ale wolałbym nie, bo one się przydają do czegoś innego. No, chyba że nie ma wyboru

Ten post edytował Asmox 19.01.2009, 19:02:40
Go to the top of the page
+Quote Post
bim2
post
Post #14





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


@pyro
Dziwne, coś w php 5 musieli zmienić.

  1. <?php
  2. $_GET['cos'] = 'test';
  3. $zm = $_GET['cos'];
  4. $zm();
  5.  
  6. function test()
  7. {
  8. echo 'lol';
  9. }
  10. ?>

Tak działa, ale pamiętam że ta konstrukcja co podałem działała. ;/
Go to the top of the page
+Quote Post
Asmox
post
Post #15





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


O właśnie mi wpadło do głowy żeby tę zmiennę może przez POST wysłać. No i jak to zrobić przez php?
Czy wystarczy na końcu pliku skryptu dodać $_POST['wrong'] = true;
A potem tylko $zmienna = $_POST['wrong'];
Czy to będzie ok?
Go to the top of the page
+Quote Post
pyro
post
Post #16





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(bim2 @ 19.01.2009, 19:34:32 ) *
@pyro
Dziwne, coś w php 5 musieli zmienić.

  1. <?php
  2. $_GET['cos'] = 'test';
  3. $zm = $_GET['cos'];
  4. $zm();
  5.  
  6. function test()
  7. {
  8. echo 'lol';
  9. }
  10. ?>

Tak działa, ale pamiętam że ta konstrukcja co podałem działała. ;/


Takie coś by napewno zadziałało, mi chodziło o te nawiasy klamrowe, dodaj je sobie i zobacz jak działają....
Go to the top of the page
+Quote Post
Asmox
post
Post #17





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Nie rozumiem o co robi 5 linijka kodu.
I o co w ogóle chodzi w tym kodzie?
Powtarzam moje pytanie:
Jak skrypt php może wysłać dane metodą POST, tak, aby mógł je odebrać inny skrypt
Znaczy, że w skrypcie wysyłamy dane metodą POST, następnie modyfikujemy nagłówek header("Location: strona.php")

Ten post edytował Asmox 19.01.2009, 22:12:43
Go to the top of the page
+Quote Post
erix
post
Post #18





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Nie rozumiem o co robi 5 linijka kodu.

http://pl.php.net/manual/pl/functions.variable-functions.php

Cytat
Znaczy, że w skrypcie wysyłamy dane metodą POST, następnie modyfikujemy nagłówek header("Location: strona.php")

Zaraz, Ty chcesz przekazać dane $_POST do innego skryptu? Tzn. przekierować (location) wraz z danymi formularza?

Jeśli tak, to tylko cURL" title="Zobacz w manualu PHP" target="_manual.
Go to the top of the page
+Quote Post
Asmox
post
Post #19





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Eh... No to zrobię przykład jak to ma być:
1. Strona główna dołącza plik tekstowy z formularzem
2. Formularz wysyła dane do skryptu zaloguj.php
3. SKRYPT ZALOGUJ SPRAWDZA DANE. JEŚLI SĄ ZŁE TO WYSYŁA DANE Z POWROTEM (CZYLI NA STRONĘ GŁÓWNĄ) informację metodą post $_POST['wrong'] = true
4. Formularz odbiera informację i przez to używając funkcji if sprawia, że akapit ma klasę error.

I to wszystko. Pytanie: Jak php może wysłać dane metodą POST?
Cytat("erix")
Zaraz, Ty chcesz przekazać dane $_POST do innego skryptu? Tzn. przekierować (location) wraz z danymi formularza?
Jeśli tak, to tylko cURL.

Nie wiem co to ten cURL. Czy mógłbyś mi powiedzieć jak działa? Z manuala nie wiele się dowiedziałem, bo wszystko jest po angielsku :[
Nie może ktoś tego przetłumaczyć?
Go to the top of the page
+Quote Post
bim2
post
Post #20





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


A nie możesz tak
1. Formularz na stronie głównej
2. Dane do zaloguj.php
3. Sprawdzanie
4. jeśli źle, wyświetlasz niżej formularz, a _POST masz ciągle bo nie przeładowujesz stronę
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 23.08.2025 - 04:43