Witam.
Przerabiam książkę "Dynamiczne strony WWW php i MySQL" z Heliona i utknąłem pod koniec 3-ciego rozdziału.
Mam skrypt:
<?php # Skrypt 3.15 - rejestracja.php
if (isset($_POST['submit'])) { // Obsluż formularz.
$message = NULL; // Utworz nową, pustą zmienną.
// Sprawdź nazwisko.
if (strlen($_POST['name']) > 0
) { $name = TRUE;
} else {
$name = FALSE;
$message .= '<p>Zapomniałeś podać swoje nazwisko!</p>';
}
// Sprawdź adres e-mail.
if (strlen($_POST['email']) > 0
) { $email = TRUE;
} else {
$email = FALSE;
$message .= '<p>Zapomniałeś podać swój adres e-mail!</p>';
}
// Sprawdź nazwę użytkownika.
if (strlen($_POST['username']) > 0
) { $username = TRUE;
} else {
$username = FALSE;
$message .= '<p>Zapomniałeś wprowadzić nazwę użytkownika!</p>';
}
// Sprawdź czy użytkownik wprowadził hasło i czy w obu polach jest ono takie samo.
if (strlen($_POST['password1']) > 0
) { if ($_POST['password1'] == $_POST['password2']) {
$password = TRUE;
} else {
$password = FALSE;
$message .= '<p>Za drugim razem wpisałeś inne hasło!</p>';
}
} else {
$password = FALSE;
$message .= '<p>Zapomniałeś wprowadzić hasło!</p>';
}
if ($name && $email && $username && $password) { // Jezeli wszystko jest OK.
// Zarejestruj uzytkownika.
// Wyslij maila.
$body = "Dziękujemy za zarejestrowanie się na naszej stronie!nTwoja nazwa użytkownik
a to '{$_POST['username']}' a Twoje hasło to '{$_POST['password1']}'.nnZ poważaniem,nMy";
mail ($_POST['email'], 'Dziekujemy za zarejestrowanie sie!', $body, 'From: admin@localhost'); header ('Location: dziekujemy.php'); } else {
$message .= '<p>Wróć do formularza i spróbuj jeszcze raz.</p>';
}
}
// Ustaw tytul strony i naglowek HTML.
$page_title = 'Zarejestruj się!';
include ('./naglowek.inc');
// Jezeli jest jakis komunikat o bledzie, wyswietl go na stronie
echo '<font color="red">', $message, '</font>'; }
?>
<form action="
<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset><legend>Wprowadź do poniższego formularza informacje na swój temat:</legend>
<p><b>Nazwisko:</b> <input type="text" name="name" size="20" maxlength="40" value="
<?php if (isset($_POST['name'])) echo $_POST['name']; ?>" /></p>
<p><b>Adres e-mail:</b> <input type="text" name="email" size="40" maxlength="60" value="
<?php if (isset($_POST['email'])) echo $_POST['email']; ?>" /> </p>
<p><b>Nazwa użytkownika:</b> <input type="text" name="username" size="20" maxlength="40" value="
<?php if (isset($_POST['username'])) echo $_POST['username']; ?>" /></p>
<p><b>Hasło:</b> <input type="password" name="password1" size="20" maxlength="40" /></p>
<p><b>Potwierdź hasło:</b> <input type="password" name="password2" size="20" maxlength="40" /></p>
</fieldset>
<div align="center"><input type="submit" name="submit" value="Wyślij dane" /></div>
</form><!-- Koniec formularza -->
<?php
include ('./stopka.inc'); // Dołącz stopkę HTML.
?>
Po wypełnieniu danych we formularzu i próbie wysłania otrzymuję następujący błąd:
Kod
Warning: mail() [function.mail]: SMTP server response: 550 Invalid recipient: mail@onet.pl in c:\usr\krasnal\www\dyn\rejestracja.php on line 49
Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\dyn\rejestracja.php:49) in c:\usr\krasnal\www\dyn\rejestracja.php on line 50
Skrypt dokładnie sprawdziłem i jest taki sam jak w książce. Poza tym znalazłem przykłady do tej książki na serwerze Heliona i wkleiłem oryginalny. Ciągle taki sam błąd.
W opisie skryptu autor książki podał informację, że w przypadku problemów może coś być nie tak w pliku php.ini. Używam Krasnala i nie wiem o który plik php.ini chodzi. Jeden jest w katalogu Windowsa, drugi w c:\usr\php, trzeci w c:\usr\php5, czwarty w c:\usr\ini\php\5. OK, otwarłem ten z katalogu c:\windows i są tam następujące informacje:
Kod
[mail function]
; For Win32 only.
SMTP =localhost
; For Win32 only.
sendmail_from =admin@localhost
; For Unix only. You may supply arguments as well (default: 'sendmail -t -i').
;sendmail_path =
Naprawdę nie wiem co może być przyczyną, że jestem informowany o nieprawidłowym odbiorcy w funkcji MAIL i że nagłówki już zostały wysłane.
Pozdrawiam,
Krzysiek
Ten post edytował Musashi 25.10.2006, 15:10:29