Początkujący w PHP - gdzie jest błąd?

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Vic
Nowy
Nowy
Posty: 171
Rejestracja: sob mar 13, 2004 1:55 pm
Lokalizacja: Warszawa
Kontakt:

Początkujący w PHP - gdzie jest błąd?

Post autor: Vic »

Podstawy PHP poznałem wczoraj. Dziś napisałem swój pierwszy skrypt
sprawdzający poprawność wpisywanych danych w formularzu (nie bazowałem na przykładach).
Wszystko wydaje się być dobrze napisane i nie mogę wychwycić błędu.
Oto co wypisuje mi serw po wciśnięciu w formularzu SUBMIT(pole Action celuje w plik a Method to Post) :
<b>Warning: Failed to connect to mailserver, verify your "SMTP" setting in php.ini in c:\phpdev\www\rekrutacja\formcheck.php on line 22</b>


A oto pełen tekst skryptu, pytanie gdzie jest błąd (wiem, że z ostatnią linijką równierz wynikają problemy, ale nie oto chodzi):
BTW: line 22 to funkcja wysyłająca maila (czyli tutaj chyba 23 :))

[php]<?php

/*
Form Checker v 1.0 by Viktor Kabanow.
Files atached: formfail.html; fromvalid.html
Jest to skrypt sprawdzaj±cy poprawno¶ć danych wpisanych w formularzu.
Mój pierwszy skrypt w PHP :). Możliwo¶ci (v1.0):
- sprawdzanie czy użytkownik wypełnił pola ze znaczkiem *;
- czy wybrał opcję z menu kontekstowego;
- czy poprawnie wpisał swój adres e-mail;
*/


if (ereg("[^A-Za-z\d]","$ksywka")||ereg("[^A-Za-z\d]","$haslo")||ereg("[^A-Za-z]","$nazwicho")||ereg("Wybierz","$polaczenie")||ereg("[^^[^@ ]+@[^@ ]+\.[^@ \.]+$]","$mail")) {

header("Location: formfail.html");

}
else {
$adres="[email protected]";
$tekst="Formularz zgłoszeniowy do klanu TAJFUN\n\nNick: $ksywka \nHasło: $haslo \nImię i Nazwisko: $nazwicho \nPoł±czenie z Internetem: $polaczenie \nDo¶wiadczenie: $doswiadczenie lat\nWiek: $wiek \nEmail: $mail \nGG: $gg \nInny Komunikator: $komunikator \nCo¶ o sobie:\n $osobie";

mail($adres, "TAJFUN", $tekst);
header("Location: formvalid.html")
}


?>[/php]

Aha: dla dociekliwych: skrypt tyczy się formularzu ze strony www.tajfun.cs.prv.pl (jakby ktoś chciał mieć oko na całość [uwaga: skrypt sprawdzany był offline - na projekcie strony])
Ostatnio zmieniony sob mar 13, 2004 7:53 pm przez Vic, łącznie zmieniany 1 raz.
Grzegorz Winiarski
Nowy
Nowy
Posty: 147
Rejestracja: pt lut 27, 2004 10:36 pm
Lokalizacja: Kraków

Re: Początkujący w PHP - gdzie jest błąd?

Post autor: Grzegorz Winiarski »

Żeby skorzystac z funkcji mail() musisz być połaczony z internetem, niektóre serwery wymagają również autoryzacji przed wyslaniem maila
Vic
Nowy
Nowy
Posty: 171
Rejestracja: sob mar 13, 2004 1:55 pm
Lokalizacja: Warszawa
Kontakt:

Re: Początkujący w PHP - gdzie jest błąd?

Post autor: Vic »

Czyli nijak nie sprawdze czy skrypt chodzi offline? (np. teraz sprawdziłem i wychodzi to samo)
Grzegorz Winiarski
Nowy
Nowy
Posty: 147
Rejestracja: pt lut 27, 2004 10:36 pm
Lokalizacja: Kraków

Re: Początkujący w PHP - gdzie jest błąd?

Post autor: Grzegorz Winiarski »

Według mnie to nie ma co tu sprawdzac, wszystko powinno być w porządku. Jeżeli chcesz sprawdzic czy tresc maila wygląda dobrze to zamiast mail() wpisz echo $tekst i wszystko bedzie jasne.
Vic
Nowy
Nowy
Posty: 171
Rejestracja: sob mar 13, 2004 1:55 pm
Lokalizacja: Warszawa
Kontakt:

Re: Początkujący w PHP - gdzie jest błąd?

Post autor: Vic »

I dla upewnienia się:

Pętla warunkowa if (i jej warunki) równierz są poprawne?
(if pola nie zawieraja wyrazów, then wejdz na strone mowiajca ze nie wypelniles ich, else wejdz na strone ze wypelniles)

I co do ostatniej linijki (header("location")
Z tego co rozumiem z wypisanego bledu (którego tu nie przytoczyłem) informacje do header stronki zostaly przeslane w funkcji mail(). Z tego powodu równierz wyskakuje błąd.

co jest (pytanie ewentualne gdyz wiem jak to pominąć)?
wixor
Przelotem
Przelotem
Posty: 336
Rejestracja: śr gru 31, 2003 10:18 pm
Lokalizacja: Wrocław

Re: Początkujący w PHP - gdzie jest błąd?

Post autor: wixor »

Rzecz stoi tak: warunki są ok, a errory są spowodowane innymi errorami... Jak mail się wścieka i mówi, że wysyłane nie bedzie to wypuszcza tekst do przeglądarki. A jak header patrzy, że coś już poszło do browsera to się wścieka, bo headery muszą zostać wysłane przed treścią strony i mamy drugiego errora.
Vic
Nowy
Nowy
Posty: 171
Rejestracja: sob mar 13, 2004 1:55 pm
Lokalizacja: Warszawa
Kontakt:

Re: Początkujący w PHP - gdzie jest błąd?

Post autor: Vic »

Dzienks Panowie. Skrypt napisalem i wszystko dziala. Jestem z siebie dumny... :))
Grzegorz Winiarski
Nowy
Nowy
Posty: 147
Rejestracja: pt lut 27, 2004 10:36 pm
Lokalizacja: Kraków

Re: Początkujący w PHP - gdzie jest błąd?

Post autor: Grzegorz Winiarski »

Heh, znam to uczucie :-D mnie osobiscie nic bardziej nie cieszy niż własnoręcznie napisany skrypt. :roll:
ODPOWIEDZ