Witam ! Nie mam zielonego pojęcia na temat PHP więc liczę na Waszą pomoc.
-
Jak zmodyfikować poniższy kod (kod na pewno jest poprawny sprawdzałam działanie), aby w przypadku nie wypełnienia pól lub błędu wyświetlał się komunikat : „wypełnij wszystkie formularza”, ale nie samodzielnie tylko razem z wszystkimi polami do wypełnienia. Na chwile obecna wyświetla się, ale samodzielnie.
-
Jak dołączyć poniższy kod captcha do powyższego formularza tak aby wysyłała się po prawidłowym wpisaniu kodu z obrazka (kod captcha także jest poprawny – sprawdziłam).
Proszę o proste tłumaczenie jaki kod i gdzie mam wstawić, gdyż jak wspomniałam nie wiem nic o PHP. Z góry dziekuję za pomoc.
Kod formularza:
<?php
// sprawdzamy, czy zmienna $submit jest pusta
if (empty($_POST['submit'])) {
// wyświetlamy formularz
echo "
| Treść wiadomości | |
| Imię, nazwisko lub nick | |
| Adres e-mail | |
| | |
“; } // sprawdzamy, czy zmienne przesłane z formularza nie są puste elseif (!empty($_POST[‘tresc’]) && !empty($_POST[‘imie’]) && !empty($_POST[‘email’])) { // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość // zmienna $message zawiera treść wiadomości $message = “Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]”; // zmienna $header zawiera przede wszystkim adres zwrotny $header = “From: $_POST[imie] <$_POST[email]>”; // funkcja mail() za pomocą której wiadomość zostanie wysłana @mail(“adres@domena.pl”,“Wiadomosc ze strony WWW”,”$message","$header") or die(‘Nie udało się wysłać wiadomości’); // wyświetlenie komunikatu w przypadku powodzenia echo "
Wiadomość została wysłana poprawnie!"; } // lub w przypadku nie wypełnienia formularza do końca else echo “Wypełnij wszystkie pola formularza!”; ?> [/code] Captcha (mam kod w postaci 3 plików) Nazwa pliku: index.php Kod:
[code] Nazwa pliku: process.php Kod:
?php
session_start(); // start sesji
$session = $_SESSION['captcha']; // zdefiniowanie sesji
$image = $_POST['image'];
$image = md5($image); // szyfrowanie MD5
if ($session == $image){ //dalsze instrukcje, jeśli token jest poprawny
echo "KOD POPRAWNY";
}
// dalsze instrukcje, jeśli token jest błędny tutaj możesz ustawić czy chcesz mieć tylko informację o błędnym kodzie lub usuń // przed header i powrócisz do formularza
else{
//header("Location: form.php");
echo "
"; echo "
"; echo "BŁĘDNY KOD
"; echo "
"; echo "
"; } echo “”; ? [/code] Nazwa pliku: image.php Kod:
[code] ?php session_start(); //Zapraszam do dystrybucji i wykorzystania jak chcesz //Wystarczy pozostawić poniższy nagłówek i komentarze nienaruszone // GENERATOR TOKENA - CAPTCHA //Email: int-24@wp.pl //Web: www.int24.unl.pl // wysłanie nagłówków do przeglądarki header ("(anti-spam-content-type:) image/jpg"); // generowanie liczb losowych do wykorzystania w naszym szyfrowaniu $enc_num = rand(0, 9999); // numer ten jest szyfrowany $key_num = rand(0, 24); // używany ciąg znaków wykorzystany na obrazku // użyj losowy ciąg cyfr i liter przy użyciu MD5 // ilość wyświetlanych znaków w naszym przypadku 5 $hash_string = substr(md5($enc_num), $key_num, 5); $hash_md5 = md5($hash_string); // przypisanie do sesji $_SESSION[‘captcha’] = $hash_md5; // tworzą zestaw obrazów jako tło pod tokenem $bgs = array(“back1.jpg”, “back2.jpg”, “back3.jpg”); // wybiera obraz tła przy użyciu funkcji podręcznej array_rand $background = array_rand($bgs, 1); // ustawia jako tło losowo wybrany gif $img_handle = imagecreatefromjpeg($bgs[$background]); // kolor czcionki, tekstu $text_colour = imagecolorallocate($img_handle, 0, 0, 0); // wielkosc czcionki, tekstu $font_size = 5; // pobierz wymiary poziome i pionowe obrazu tla $size_array = getimagesize($bgs[$background]); $img_w = $size_array[0]; $img_h = $size_array[1]; // pozycja pozioma $horiz = round(($img_w/2)-((strlen($hash_string)*imagefontwidth(5))/2), 1); // pozycja pionowa $vert = round(($img_h/2)-(imagefontheight($font_size)/2)); // umieść wygenerowany tekst na tle imagestring($img_handle, $font_size, $horiz, $vert, $hash_string, $text_colour); // tworzenie obrazu imagejpeg($img_handle); // usuwanie obrazu imagedestroy($img_handle); ?