Witam serdecznie,
działa mi całe sprawdzanie w przeglądarkach Mozillla , Chrome :) :), ale w explorer cały czas mi wysyła pocztę. Nawet jak są nie poprawne dane wprowadzone. W innych przeglądarkach w momencie wprowadzenia nie poprawnych danych, zostaje zablokowane wysłanie wiadomości i pojawiają się komunikaty o błędach.
Szczerze to nie wiem dla czego tak się dzieje...
Mój kod przedstawia się w następujący sposób:
--- kod HTML (formularz ):
<?
$wyslano = 0;
include "zabezpieczenia.php";
?>
<form method="post" action="index.php?menu=12" onsubmit="return sprawdza()" onreset="reset()" >
<table >
<tr >
<td> Temat: </td>
<td> <input type="text" name="temat" /> </td>
<td> <label></label> </td>
</tr>
<tr>
<td> *Imię i nazwisko:</td>
<td> <input type="text" name="imie" id="imie" onkeyup="sprawdzImie()"/> </td>
<td> <label id="imieKomunikat"></label> </td>
</tr>
<tr>
<td> *Adres e-mail:</td>
<td> <input type="text" name="email" id="email" onkeyup="sprawdzEmail()"/> </td>
<td> <label id="emailKomunikat"></label></td>
</tr>
<tr>
<td> *Treść wiadomości:</td>
<td> <textarea name="tresc" id="tresc" onkeyup="sprawdzTresc()"></textarea> </td>
<td> <label id="trescKomunikat"></label> </td>
</tr>
<label id="message"></label>
<tr>
<td> <input type="submit" name="submit" value="Wyślij"/> </td>
<td> <input type="reset" value="Wyczyść"/> </td>
</tr>
<tr>
<td> * pola wymagane </td>
</tr>
</table>
</form>
-- kod wysyłający pocztę:
case '12': {
?><div id="Content">
<?
$naglowki = "From: ktos@ktos.ugu.pl" . PHP_EOL . "Reply-To: ktos@ktos.ugu.pl" . PHP_EOL . "Content-type: text/html; charset=utf-8";
$tresc_nadawca = "Wiadomość od nadawcy: " . $_POST['email'] . "Treść Wiadomośći " . $_POST['tresc'];
if (mail('ktos@ktos.ugu.pl', $_POST['temat'], $tresc_nadawca, $naglowki)) {
$wyslano = 1;
echo 'Wiadomość została wysłana';
} else {
$wyslano = 0;
echo 'Błąd ';
}
?>
</div>
<?} break;
} ?>
--- plik zabezpieczenia.php :
<script type="text/javascript">
var Imie = false;
var Email = false;
var Tresc = false;
function sprawdza(){
sprawdzEmail(); sprawdzImie(); sprawdzTresc();
var ok = Imie && Email && Tresc;
if (ok){
document.getElementById("message").innerHTML = "<span style=\"color:191038;\">Wiadomość jest w trakcie wysyłania. </span>";
return true;
} else {
document.getElementById("message").innerHTML = "<span style=\"color:red;\">Wypełnij wszystkie pola prawidłowymi danymi! </span>";
return false;
}
}
function reset(){
Imie = false;
Email = false;
Tresc = false;
}
function sprawdzImie(){
var wyrazenie = /^[_a-zA-Z ]+$/;
var imie = document.getElementById("imie").value;
var czyImie = wyrazenie.test(imie);
if (czyImie) {
document.getElementById("imieKomunikat").innerHTML = "<span style=\"color:#191038;\"></span>";
Imie = true;
} else {
document.getElementById("imieKomunikat").innerHTML = "<span style=\"color:red;\">Podaj prwaidłowo Swoje imie i nazwisko! </span>";
Imie = false;
}
}
function sprawdzEmail(){
var wyrazenie2 = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
var email = document.getElementById("email").value;
var czyEmail = wyrazenie2.test(email);
if (czyEmail) {
document.getElementById("emailKomunikat").innerHTML = "<span style=\"color:#191038;\"></span>";
Email = true;
} else {
document.getElementById("emailKomunikat").innerHTML = "<span style=\"color:red;\">Podaj prawidłowy email!</span>";
Email = false;
}
}
function sprawdzTresc(){
var wyrazenie3 = /^[ ]$/;
var tresc = document.getElementById("tresc").value;
if (!tresc) {
document.getElementById("trescKomunikat").innerHTML = "<span style=\"color:red;\">Treść jest pósta!</span>";
Tresc = false;
} else {
document.getElementById("trescKomunikat").innerHTML = "<span style=\"color:#191038;\"></span>";
Tresc = true;
}
}
</script>
Mam jakiś błąd w składni, że to powoduje nie działanie skryptu w IE? Dokładnie nie działa funkcja sprawdza() Proszę uprzejmie o wskazówkę.
ok
też nie ma tu znaczenia -- nie spowodowałoby to błędu podczas testu. Zmiennaok
musi być tylko zdefiniowana jako symbol, może mieć nawet wartość undefined. To wystarczy, by taki warunek na pewno NIE spowodował błędu czasu wykonania, a w dalszej części zmiennaok
nie jest używana, więc też nie mogła tam szkodzić.