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:
Co wpisać w miejsce echo ‘’ (trzeba coś wpisać, czy można bez obawy skasować/zostawić puste?) ?
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 .
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
ponieważ nie możesz wysyłać nagłówka (header) jeśli do przeglądarki trafiły już jakieś dane czyli innymi słowy: header musi być przed wszelkimi tagami, wartościami, czy co tam jeszcze można wysłać do przeglądarki
bo całość polega na prawidłowym ustawieniu warunków 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ę
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