Strona 1 z 1

Podstrona php w master frame nie działa

: 17 gru 2013, o 22:44
autor: matek45
Witam, mam dość irytujący problem.
Stworzyłem stronę internetową na master frame i porobiłem kilkanaście podstron (stron, które się się otwierają w master frame). Na jednej ze stron chcę umieścić formularz kontaktowy używając .php, jednak gdy odpalam podgląd całej strony i klikam w odnośnik do podstrony, gdzie znajduje się formularz, to wyskakuje błąd, jak gdyby strona nie istniała. Jeśli natomiast zmienię stronę na .html, to wszystko się otwiera, ale formularz przestaje działać (bo wykorzystuje .php).
Jest to główny problem, z którym nie potrafię sobie poradzić. Natomiast jak znajduję się na samej podstronie (.php) i kliknę "podgląd", to otwiera mi się wszystko ładnie razem z master frame. Wniosek: nie działa przekierowywanie na strony .php poprzez css menu.

A teraz kilka pytań o samych formularzach :)
1. Czy jak zaznaczam opcję, żeby formularz korzystał z .php, to wtedy omija outlooka i bezpośrednio wysyła wiadomość na pocztę?
2. Czy program ma opcję wpisywania kodów Captcha bądź czegoś podobnego, aby stworzyć blokadę dla botów?
3. Dlaczego formularze na html nie są zalecane? (Oczywiście oprócz niedogodnego wymogu skonfigurowanego programu pocztowego na komputerze)

Z góry bardzo dziękuje za pomoc i porady.

Re: Podstrona php w master frame nie działa

: 18 gru 2013, o 02:26
autor: matek45
Ok, już sobie poradziłem z głównym problemem. Na serwerze wszystko działa jak trzeba (css menu do strony .php), podgląd niestety nie ogarnia tego należycie.
Pojawił się niestety inny problem - uzupełniłem formularz, który wsadziłem na serwer, wysłałem i ..., no właśnie, ... i NIC! Czy ten formularz na pewno wysyła wiadomości? |Po wysłaniu wiadomości przeszło na stronę, którą zaznaczyłem jako pomyślne wypełnienie formularza. Dla testu sprawdziłem czy działa złe wypełnienie i na szczęście działa, tzn. pojawiła się strona, którą ustawiłem, że coś jest źle.
<?php
if (session_id() == "")
{
session_start();
}
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (isset($_POST['captcha_code'],$_SESSION['random_txt']) && md5($_POST['captcha_code']) == $_SESSION['random_txt'])
{
unset($_POST['captcha_code'],$_SESSION['random_txt']);
}
else
{
$errorcode = file_get_contents('./kontakt.html');
$replace = "##error##";
$errorcode = str_replace($replace, 'The entered code was wrong.', $errorcode);
echo $errorcode;
exit;
}
}
?>
<?php
function ValidateEmail($email)
{
$pattern = '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
return preg_match($pattern, $email);
}

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$mailto = 'ketsyrk.mateusz@gmail.com';
$mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
$subject = 'Wypełniono formularz na stronie';
$message = 'Values submitted from web site form:';
$success_url = './index.html';
$error_url = './kontakt.html';
$error = '';
$eol = "\r\n";
$max_filesize = isset($_POST['filesize']) ? $_POST['filesize'] * 1024 : 1024000;
$boundary = md5(uniqid(time()));

$header = 'From: '.$mailfrom.$eol;
$header .= 'Reply-To: '.$mailfrom.$eol;
$header .= 'MIME-Version: 1.0'.$eol;
$header .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'.$eol;
$header .= 'X-Mailer: PHP v'.phpversion().$eol;
if (!ValidateEmail($mailfrom))
{
$error .= "The specified email address is invalid!\n<br>";
}

if (!empty($error))
{
$errorcode = file_get_contents($error_url);
$replace = "##error##";
$errorcode = str_replace($replace, $error, $errorcode);
echo $errorcode;
exit;
}

$internalfields = array ("submit", "reset", "send", "captcha_code");
$message .= $eol;
$message .= "IP Address : ";
$message .= $_SERVER['REMOTE_ADDR'];
$message .= $eol;
foreach ($_POST as $key => $value)
{
if (!in_array(strtolower($key), $internalfields))
{
if (!is_array($value))
{
$message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol;
}
else
{
$message .= ucwords(str_replace("_", " ", $key)) . " : " . implode(",", $value) . $eol;
}
}
}

$body = 'This is a multi-part message in MIME format.'.$eol.$eol;
$body .= '--'.$boundary.$eol;
$body .= 'Content-Type: text/plain; charset=ISO-8859-1'.$eol;
$body .= 'Content-Transfer-Encoding: 8bit'.$eol;
$body .= $eol.stripslashes($message).$eol;
if (!empty($_FILES))
{
foreach ($_FILES as $key => $value)
{
if ($_FILES[$key]['error'] == 0 && $_FILES[$key]['size'] <= $max_filesize)
{
$body .= '--'.$boundary.$eol;
$body .= 'Content-Type: '.$_FILES[$key]['type'].'; name='.$_FILES[$key]['name'].$eol;
$body .= 'Content-Transfer-Encoding: base64'.$eol;
$body .= 'Content-Disposition: attachment; filename='.$_FILES[$key]['name'].$eol;
$body .= $eol.chunk_split(base64_encode(file_get_contents($_FILES[$key]['tmp_name']))).$eol;
}
}
}
$body .= '--'.$boundary.'--'.$eol;
if ($mailto != '')
{
mail($mailto, $subject, $body, $header);
}
header('Location: '.$success_url);
exit;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

PS. Captcha jest dostępna w programie (znalazłem ją dopiero przy kreatorze formularzy).

Pozdrawiam!