2016-05-27 6 views
0

私が取り組んでいるウェブサイトにPHPフォームを追加しようとしています。 PHPに精通しているわけではありませんが、ファイルをCMSのuploadフォルダに入れました。CMSをシンプルにしました - PHPフォームを追加

私はjQueryと他のファイルを正しくリンクしていると思うし、電子メールなどに入れてPHPファイルを編集したと思います。これもまた別のPHP検証ファイルを呼び出します。

とにかく正常に表示され、記入することができますが、404ページに行き、動作しません。

私の質問は、私はphpファイルにリンクするためにどのようなリンクの規則を使用し、適切な場所にありますか? CMSがインストールされているcPanelを使用します。

代わりに:action="url([[root_url]]/uploads/scripts/form-to-email.php" 私はちょうど置く必要があります:action="uploads/scripts/form-to-email.php"?問題の

ページはこちらです:www.edelweiss-web-design.com.au/captainkilowatt/

また、誰もが、私はそれと統合することができます良いキャプチャを知っていますか...?ありがとう!ここで

<div class="contact-form"> 
    <h1>Contact Us</h1> 
    <form id="contact-form" method="POST" action="uploads/scripts/form-to-email.php"> 

     <div class="control-group"> 
      <label>Your Name</label> 
      <input class="fullname" type="text" name="fullname" /> 
     </div> 

     <div class="control-group"> 
      <label>Email</label> 
      <input class="email" type="text" name="email" /> 
     </div> 

     <div class="control-group"> 
      <label>Phone (optional)</label> 
      <input class="phone" type="text" name="phone" /> 
     </div> 

     <div class="control-group"> 
      <label>Message</label> 
      <textarea class="message" name="message"></textarea> 
     </div> 

     <div id="errors"></div> 

     <div class="control-group no-margin"> 
      <input type="submit" name="submit" value="Submit" id="submit" /> 
     </div> 

    </form> 
    <div id='msg_submitting'><h2>Submitting ...</h2></div> 
    <div id='msg_submitted'><h2>Thank you !<br> The form was submitted Successfully.</h2></div> 
</div> 

はPHPです:

<?php 
/* 
Configuration 
You are to edit these configuration values. Not all of them need to be edited. 
However, the first few obviously need to be edited. 
EMAIL_RECIPIENTS - your email address where you want to get the form submission. 

*/ 

$email_recipients = "[email protected]";//<<=== enter your email address here 
//$email_recipients = "[email protected],[email protected]"; <<=== more than one recipients like this 


$visitors_email_field = 'email';//The name of the field where your user enters their email address 
//This is handy when you want to reply to your users via email 
//The script will set the reply-to header of the email to this email 
//Leave blank if there is no email field in your form 
$email_subject = "New Form submission"; 

$enable_auto_response = true;//Make this false if you donot want auto-response. 

//Update the following auto-response to the user 
$auto_response_subj = "Thanks for contacting us"; 
$auto_response =" 
Hi 

Thanks for contacting us. We will get back to you soon! 

Regards 
Captain Kilowatt 
"; 

/*optional settings. better leave it as is for the first time*/ 
$email_from = ''; /*From address for the emails*/ 
$thank_you_url = 'http://www.edelweiss-web-design.com.au/captainkilowatt.html';/*URL to redirect to, after successful form submission*/ 

/* 
This is the PHP back-end script that processes the form submission. 
It first validates the input and then emails the form submission. 
The variable $_POST contains the form submission data. 
*/ 
if(!isset($_POST['submit'])) 
{ 
// note that our submit button's name is 'submit' 
// We are checking whether submit button is pressed 
// This page should not be accessed directly. Need to submit the form. 
echo "error; you need to submit the form!".print_r($_POST,true); 
exit; 
} 

require_once "http://edelweiss-web-design.com.au/captainkilowatt/upload/scripts/formvalidator.php"; 
//Setup Validations 
$validator = new FormValidator(); 
$validator->addValidation("fullname","req","Please fill in Name"); 
$validator->addValidation("email","req","Please fill in Email"); 
//Now, validate the form 
if(false == $validator->ValidateForm()) 
{ 
echo "<B>Validation Errors:</B>"; 

$error_hash = $validator->GetErrors(); 
foreach($error_hash as $inpname => $inp_err) 
{ 
echo "<p>$inpname : $inp_err</p>\n"; 
} 
exit; 
} 
$visitor_email=''; 
if(!empty($visitors_email_field)) 
{ 
$visitor_email = $_POST[$visitors_email_field]; 
} 

if(empty($email_from)) 
{ 
$host = $_SERVER['SERVER_NAME']; 
$email_from ="[email protected]$host"; 
} 

$fieldtable = ''; 
foreach ($_POST as $field => $value) 
{ 
if($field == 'submit') 
{ 
continue; 
} 
if(is_array($value)) 
{ 
$value = implode(", ", $value); 
} 
$fieldtable .= "$field: $value\n"; 
} 

$extra_info = "User's IP Address: ".$_SERVER['REMOTE_ADDR']."\n"; 

$email_body = "You have received a new form submission. Details below:\n$fieldtable\n $extra_info"; 

$headers = "From: $email_from \r\n"; 
$headers .= "Reply-To: $visitor_email \r\n"; 
//Send the email! 
@mail(/*to*/$email_recipients, $email_subject, $email_body,$headers); 

//Now send an auto-response to the user who submitted the form 
if($enable_auto_response == true && !empty($visitor_email)) 
{ 
$headers = "From: $email_from \r\n"; 
@mail(/*to*/$visitor_email, $auto_response_subj, $auto_response,$headers); 
} 

//done. 
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') 
{ 
//This is an ajax form. So we return success as a signal of succesful processing 
echo "success"; 
} 
else 
{ 
//This is not an ajax form. we redirect the user to a Thank you page 
header('Location: '.$thank_you_url); 
} 
?><?php 
/* 
Configuration 
You are to edit these configuration values. Not all of them need to be edited. 
However, the first few obviously need to be edited. 
EMAIL_RECIPIENTS - your email address where you want to get the form submission. 

*/ 

$email_recipients = "[email protected]";//<<=== enter your email address here 
//$email_recipients = "[email protected],[email protected]"; <<=== more than one recipients like this 


$visitors_email_field = 'email';//The name of the field where your user enters their email address 
//This is handy when you want to reply to your users via email 
//The script will set the reply-to header of the email to this email 
//Leave blank if there is no email field in your form 
$email_subject = "New Form submission"; 

$enable_auto_response = true;//Make this false if you donot want auto-response. 

//Update the following auto-response to the user 
$auto_response_subj = "Thanks for contacting us"; 
$auto_response =" 
Hi 

Thanks for contacting us. We will get back to you soon! 

Regards 
Captain Kilowatt 
"; 

/*optional settings. better leave it as is for the first time*/ 
$email_from = ''; /*From address for the emails*/ 
$thank_you_url = 'http://www.edelweiss-web-design.com.au/captainkilowatt.html';/*URL to redirect to, after successful form submission*/ 

/* 
This is the PHP back-end script that processes the form submission. 
It first validates the input and then emails the form submission. 
The variable $_POST contains the form submission data. 
*/ 
if(!isset($_POST['submit'])) 
{ 
// note that our submit button's name is 'submit' 
// We are checking whether submit button is pressed 
// This page should not be accessed directly. Need to submit the form. 
echo "error; you need to submit the form!".print_r($_POST,true); 
exit; 
} 

require_once "http://www.edelweiss-web-design.com.au/captainkilowatt/upload/scripts/formvalidator.php"; 
//Setup Validations 
$validator = new FormValidator(); 
$validator->addValidation("fullname","req","Please fill in Name"); 
$validator->addValidation("email","req","Please fill in Email"); 
//Now, validate the form 
if(false == $validator->ValidateForm()) 
{ 
echo "<B>Validation Errors:</B>"; 

$error_hash = $validator->GetErrors(); 
foreach($error_hash as $inpname => $inp_err) 
{ 
echo "<p>$inpname : $inp_err</p>\n"; 
} 
exit; 
} 
$visitor_email=''; 
if(!empty($visitors_email_field)) 
{ 
$visitor_email = $_POST[$visitors_email_field]; 
} 

if(empty($email_from)) 
{ 
$host = $_SERVER['SERVER_NAME']; 
$email_from ="[email protected]$host"; 
} 

$fieldtable = ''; 
foreach ($_POST as $field => $value) 
{ 
if($field == 'submit') 
{ 
continue; 
} 
if(is_array($value)) 
{ 
$value = implode(", ", $value); 
} 
$fieldtable .= "$field: $value\n"; 
} 

$extra_info = "User's IP Address: ".$_SERVER['REMOTE_ADDR']."\n"; 

$email_body = "You have received a new form submission. Details below:\n$fieldtable\n $extra_info"; 

$headers = "From: $email_from \r\n"; 
$headers .= "Reply-To: $visitor_email \r\n"; 
//Send the email! 
@mail(/*to*/$email_recipients, $email_subject, $email_body,$headers); 

//Now send an auto-response to the user who submitted the form 
if($enable_auto_response == true && !empty($visitor_email)) 
{ 
$headers = "From: $email_from \r\n"; 
@mail(/*to*/$visitor_email, $auto_response_subj, $auto_response,$headers); 
} 

//done. 
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') 
{ 
//This is an ajax form. So we return success as a signal of succesful processing 
echo "success"; 
} 
else 
{ 
//This is not an ajax form. we redirect the user to a Thank you page 
header('Location: '.$thank_you_url); 
} 
?> 

私はPHPファイルを追加しました。 アクション部でフォームを送信すると、404は表示されなくなりますが、空白のページには 'form-to-email.php'ページが表示されます。しかし、このスクリプトは私が理解できるものからは機能していません。再び、私はhtmlとcss、そして少しjavasciptを知っていますが、PHPはどのように動作するのですか?

私は間違っていますか?

+0

ようこそ。詳細については、ここで説明するように質問が完了していることを確認してください。http://stackoverflow.com/help/mcve完全な質問については、より早く、より良い回答を得ることができます。 – tfv

+0

あなたの質問にあなたの連絡先フォームhtmlを置くべきですが、あなたの問題はあなたに一連の置換スキームやテンプレートライブラリに基づく(おそらく)一連のURLがあるので、 'url – Rasclatt

+0

こんにちはラスクラット、私はあなたの言葉について私の質問を編集しました。[[root_url]]/uploads/scripts/form-to-email.php'あなたが意図した通りに[[root_url]] ' [root_url]]はCMSMSのCSSスタイルシートからうまく動作しますが、テンプレートからではないかもしれません... –

答えて

2

PHPでフォームを作成するのではなく、CMSのモジュールの1つを使用することをお勧めします。 CMS構築機能を使用する方がはるかに安全であり、それが最初にCMSを使用する点です。 CMSをシンプルにするために、フォームビルダーモジュールはここにあります: http://dev.cmsmadesimple.org/projects/formbuilder

+0

私は働くフォームビルダを得ることができません。 cms_mailerモジュールは償却され、フォームビルダーはこれに依存します。手動で最新のバージョンをアップロードしてアンインストールし、再インストールしてみました。 –

+0

よろしくお願い致します。フォームはメールを送信しています - yipeee!ただし、検証は機能していません。次のエラーメッセージが表示されます:警告:require_once(formvalidator.php):ストリームを開くことに失敗しました:/home/edelw250/public_html/captainkilowatt/uploads/scripts/form-to-email.php on line 51のファイルまたはディレクトリがありません 致命的なエラー:require_once():/ home/edelw250/public_html/captainkilowatt/uploadsの必須の 'formvalidator.php'(include_path = ':/ usr/lib/php:/ usr/local/lib/php' /scripts/form-to-email.php on line 51私はphpファイルのパスを変更する必要があると思います...? –

+0

ほとんどの場合、そうする必要はありません。 formvalidator.phpファイルがどこにあるのかを調べ、正しいinclude_path(/ home/edelw250/public_html/captainkilowatt /が見つからない可能性があります)を作成する必要があります。代わりに、検証が機能するかどうかをテストするためにrequire_onceを変更してください(formvalidator.phpがもっとクラスを必要としないと仮定して)。 –

0

ありがとうございました。

私はcaptcha(PHP)で別のフォームを見つけ、それをそのままCMSMSアップロードフォルダにアップロードして全体の構造を保存しました。 それから、私のページにフォームを埋め込むためにiframeを使用し、CSSと言葉で少しの詳細を変更しました。そして、あなたのおじさんのボブはうまく動作します。

は興味がある人のために、私が使用:www.html-form-guide.com/contact-form/creating-a-contact-form.html

これは無料で、私のようにスパムにしようと、確かではないのです私はこのサイトまたはそれに関連するサイトと提携することは決してありません。

関連する問題