ďťż

[PHP] POST, pole hidden znalezienie błedu w skrypcie

       

Podstrony


telcocafe

Mam taki skrypt:
echo "<p>"; echo "<form name=\"logowanie\" action=\"sprawdz.php\" method=\"post\">"; echo "<input type=\"hidden\" name=\"page\" value=\"umowa1.doc\">"; echo "<input type=\"submit\" value=\"Pobierz 1\">"; echo "</p>"; echo "<br>"; echo "<p>"; echo "<form name=\"logowanie\" action=\"sprawdz.php\" method=\"post\">"; echo "<input type=\"hidden\" name=\"page\" value=\"umowa2.doc\">"; echo "<input type=\"submit\" value=\"Pobierz 2\">"; echo "</p>";

Zaś w pliku sprawdz.php mam:
<?php $pom=$_POST["page"]; echo "$pom"; echo "<p>"; echo "<form name=\"logowanie\" action=\"go.php\" method=\"post\">"; echo "<input type=\"hidden\" name=\"strona\" value=\"$pom\">"; echo "<input type=\"submit\" value=\"Wejdż\">"; echo "</p>"; ?>

1. Dlaczego zawsze jak klikne przycisk Pobierz 1 lub Pobierz 2 to wyświtla mi napis umowa2.doc ? Czemu nie wświetla umowa1.doc jak klikne na Pobierz 1 ?
2. Dlaczego do pliku go.php nie jest przesyłana zawartość $pom z pliku sprawdz.php ?

Kod go.php
<?php $k=$_POST["strona"]; echo "$k"; ?>



Nie zamykasz znacznika <form>, a otwierasz aż dwa. Dlatego atrybut przyjmuje zawsze drugą wartość.
Druga sprawa -> formularza nie musisz "echować". To odciąży serwer.
Trzecia sprawa -> jeśli już koniecznie dajesz to w echo, to wstaw tylko raz i całość obejmij cudzysłowem, miast echować oddzielnie każdą linijkę. Poza tym poczytaj o różnicy między cudzysłowem i apostrofem w funkcji echo.
Użytkownik Lupinek edytował ten post 01 październik 2007, 22:25

Nie zamykasz znacznika <form>, a otwierasz aż dwa. Dlatego atrybut przyjmuje zawsze drugą wartość.
Druga sprawa -> formularza nie musisz "echować". To odciąży serwer.
Trzecia sprawa -> jeśli już koniecznie dajesz to w echo, to wstaw tylko raz i całość obejmij cudzysłowem, miast echować oddzielnie każdą linijkę. Poza tym poczytaj o różnicy między cudzysłowem i apostrofem w funkcji echo.

Ok dzięki pomogło.
Ale jeszcze drugie pytanie:
2. Dlaczego do pliku go.php nie jest przesyłana zawartość $pom z pliku sprawdz.php ?

Mam jeszcze trzecie, co jest złego tutaj że nie działa:
<?php header("Location: http://onet.pl"); ?>

value=\"$pom\">";
To chyba nie powinno tak wyglądać?
raczej
echo '<input type="hidden" name="strona" value="'."$pom".'">';
choć nie jest pewien, a teraz nie sprawdzę.

3. A wysyłasz ten kod przed wysłaniem jakichkolwiek danych na stronę?

WojtekP, naprawdę nie musiałeś cytować całego mojego posta ^^




echo '<input type="hidden" name="strona" value="'."$pom".'">';
choć nie jest pewien, a teraz nie sprawdzę.

3. A wysyłasz ten kod przed wysłaniem jakichkolwiek danych na stronę?


Cały kod pliku go.php:
<html> <head></head> <body> <?php header("Location: http://www.witek010.cba.pl/str/doc/$k"); ?> </body> </html>

A w sprawdz.php zmieniłem tak jak mówisz i mi wyświetla białą stronę, nawet już nie wyświetla tekstu przesłanego ze strony index.php

Primo: Guglujemy. To nie boli.

2. Skoro wyświetla Ci białą stronę, to coś jest nie tak. Sugerowana przeze mnie zmiana nie miała nic z tym wspólnego akurat :/ I nie jestem pewien nawet, czy dobrze Ci mówię, bo jestem zbyt zmęczony ^^
Daj kod.

index.php
<html> <head> </head> <body> <?php echo "<p>"; echo "<form name=\"logowanie\" action=\"sprawdz.php\" method=\"post\">"; echo "<input type=\"hidden\" name=\"page\" value=\"umowa1.doc\">"; echo "<input type=\"submit\" value=\"Pobierz 1\">"; echo "</form>"; echo "</p>"; echo "<br>"; echo "<p>"; echo "<form name=\"logowanie\" action=\"sprawdz.php\" method=\"post\">"; echo "<input type=\"hidden\" name=\"page\" value=\"umowa2.doc\">"; echo "<input type=\"submit\" value=\"Pobierz 2\">"; echo "</form>"; echo "</p>"; ?> </body> </html>

sprawdz.php
<html> <head> </head> <body> <?php $pom=$_POST["page"]; echo $pom; echo "<p>"; echo "<form name="logowanie" action="go.php" method="post">"; echo "<input type="hidden" name="strona" value="$pom">"; echo "<input type="submit" value="Wejdż">"; echo "</p>"; ?> </body> </html>

go.php
<html> <head></head> <body> <?php $k=$_POST["strona"]; header("Location: http://www.adres.pl/str/doc/$k"); ?> </body> </html>
Użytkownik WojtekP edytował ten post 02 październik 2007, 17:53
Ech...
Zapraszam do czytania tutoriali PHP, podstaw używania komendy echo, a potem do zadawania pytań.

WojtekP, czy na pewno zrobiłeś tak jak ja pokazałem?

Powtarzam -> Poczytaj o różnicy między apostrofem a cudzysłowem i wtedy popraw kod.

I, teraz znów się powtórzę, header(); winien być wysłany przed jakimkolwiek kodem html :google:
Użytkownik Lupinek edytował ten post 02 październik 2007, 11:43
Nadal nie wiem jak to ma być. nie mógłbyś poprawić mojego kodu jeżeli potrafisz?

OK JUŻ POPRAWIŁEM, temat można zamknąć.
Użytkownik WojtekP edytował ten post 02 październik 2007, 18:14
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.