Skrypt + odsyłacz - pytanie od laika


(Randall Jakub) #1

Witam.

Z góry zaznaczam, że nie znam się wcale, więc bardzo bym prosił o w miarę prostą odpowiedź.

Prosiłem przyjaciela o napisanie skryptu, który po naciśnięciu buttona 'log in' będzie zapisywał login/pass wpisane w pola do określonego pliku (dla przykładu niech to będzie 'data.php').

Przyjaciel napisał mi coś takiego:

<?


if(isset($_POST['submit']))

{

    foreach ($_POST AS $klucz => $wartosc)

    {

        $wartosc= trim($wartosc);//usuwamy biale znaki

          if (get_magic_quotes_gpc()) 

              $wartosc= stripslashes($wartosc);

        $wartosc=htmlspecialchars($wartosc, ENT_QUOTES);

        $_POST[$klucz]=$wartosc;

    }


    $login=$_POST['user'];

    $pass=$_POST['pass2'];


    $blad_txt='';

    $blad=false;





    //sprawdzamy czy jest wypelnine pole login

    if(strlen($login)<2){

        $blad_txt.='

Wpisz testowy login'; $blad=true; } //sprawdzamy czy jest wypelnine pole pass if(strlen($pass)<2){ $blad_txt.=' Wpisz testowy pass'; $blad=true; } if(!$blad) { //poprawne dane - robmy z nimi co trzeba (zapisujemy do bazy danych itp.) $noweDane = " Login:".$login." Password:".$pass." "; $fp = fopen("data.php", "a"); fputs($fp, $noweDane); fclose($fp); echo ''; } else { //cos jest zle – wyswietlamy stosowne komunikaty echo $blad_txt; } } else { //wypelniamy zmienne pustymi danymi jesli formularz nie zostal jeszcze wyslany $login=''; $pass=''; echo $blad_txt; } echo ' ' ?>[/code]

I tu pojawiają się pytania:

  1. Co wpisać w miejsce echo '' (trzeba coś wpisać, czy można bez obawy skasować/zostawić puste?) ?

  2. Teraz natomiast chciałbym, żeby po naciśnięciu buttonu 'log in' strona automatycznie robiła dwie rzeczy: zapisywała to, co jest w polach login/pass (co też robi), a także przekierowywała użytkownika do innej, określonej strony.

Niestety, przy używaniu wyżej wymienionego skryptu dostajemy tylko zapisane login/pass, natomiast strona zamiast odsyłać do innej, jakby się odświeża, czego nie chcemy.

Prosiłbym o podanie (oczywiście w miarę możliwości) skryptu lub aktualizacji do podanego przeze mnie skryptu tak, aby działał w sposób przeze mnie opisany.

Z góry serdecznie dziękuję i przepraszam za kłopot :slight_smile: .


(mrbungle) #2

w ogole wywal tą linię kodu, bo to nic nie robi...

wystarczy że dodasz linię:

header('Location: http://www.jakas-lokalizacja-w-necie.pl');

bądź podasz taki tekst:

preferuję pierwsze rozwiązanie (drugie działa gdy włączony u klienta jest Javasript) umiejscowienie w Twoim kodzie to właśnie zamiast linii

echo '';

(Randall Jakub) #3

Witam ponownie, mam kolejny problem, a mianowicie:

Po dodaniu linii

header('Location: http://nazwastrony.awardspace.info/strona.php');

zamiast

echo '';

strona dalej 'odświeża się', a na dodatek pokazuje się następujący tekst:

Warning: Cannot modify header information - headers already sent by (output started at /home/www/nazwastrony.awardspace.info/index.php:5) in /home/www/nazwastrony.awardspace.info/index.php on line 583

Linia 583 to ta, w której dodany jest header.


(Airborn) #4

ponieważ nie możesz wysyłać nagłówka (header) jeśli do przeglądarki trafiły już jakieś dane :wink: czyli innymi słowy: header musi być przed wszelkimi tagami, wartościami, czy co tam jeszcze można wysłać do przeglądarki


(Randall Jakub) #5

Hmm, tylko że jak daje przed innymi wartościami, cały czas wyświetla mi

Fatal error: Call to undefined function: () in /home/www/nazwastrony.awardspace.info/index.php on line 584

efektem czego i tak nie przekierowuje.

Jeśli natomiast wklejam wyżej wymieniony kod przed/za skryptem, to strona zamiast się ładować, od razu przekierowuje na docelową, a nie o to chodzi.


(Airborn) #6

bo całość polega na prawidłowym ustawieniu warunków :wink: jeśli ktoś ma być przekierowany, to trzeba to ustalić zaraz po otworzeniu strony a nie w momencie gdy kliknie na link, chyba, że kliknięcie na link przeniesie go do kolejnej strony, z której... zostanie od razu przeniesiony

bo coś skopałeś w tej 584 linijce, prawdopodobnie między nazwą funkcji a nawiasami () wstawiłeś spację


(Kubarek) #7

to raczej nie jest powodem, bo parser wszystkie białe znaki wycina ( pomijając np. te, które są w ciągach )

zobacz na kod:

który działa w 100%

po drugie, jeśli header('Location: ...') ma na celu przejście do innej strony, to trzeba umieścić die() po tej funkcji; w przeciwnym wypadku, wykonany zostanie także kod występujący po tej instrukcji - i to może powodować błędy


(Randall Jakub) #8

Dalej nic :slight_smile: .

Żeby nie było wątpliwości, moim zamierzeniem jest takie coś:

  1. wpisuję login

  2. wpisuję hasło

  3. klikam na button 'log in'

  4. po kliknięciu buttona strona/skrypt zapisuje dane z pól 'login' i 'pass' do określonego pliku, niech będzie to 'data.php'

  5. po zapisaniu danych 'login'/'pass' do pliku 'data.php' strona/skrypt automatycznie przekierowuje mnie do innej strony (np. 'strona.php')

Tymczasem strona/skrypt robi wszystko dobrze aż do punktu 4, na punkt piąty nijak się zgodzić nie chce.