2013-09-06 3 views
0

친구에게이 작업을 수행 한 다음 공급자를 변경했지만 지금까지 수행 한 모든 테스트에서 아무 것도 작동하지 않습니다. 제출 단추는 데이터를 PHP 파일에 전달해야합니다 ,하지만 php 파일이 실행되면 아무것도 얻지 못합니다. 지금, 아무것도 전에PHP 파일에 FORM 데이터를 전달할 수 없습니다.

<form id="lista" action="lista.php" method="post"> 
<input name="cf_name" type="text" size="50" hidden="yes" class="obscure"> 
<input name="cf_email" type="text" size="50" hidden="yes" class="obscure"> 
<textarea name="cf_message" cols="45" rows="10" hidden="yes" class="obscure"></textarea> 
<input type="image" name="lista" value="Enviar Lista por Email" src="imagens/lista_email.png" width="40" height="40" onclick="this.form.elements['cf_message'].value = lista_mail;this.form.elements['cf_name'].value = prompt('Escreva o seu nome:',  '');this.form.elements['cf_email'].value = prompt('Escreva o seu email:', '');"> 
<input name="submit" type="submit" value="Enviar" hidden="yes" class="obscure"> 
</form> 

, 그가 제출 클릭하면, 팝업은 이름과 이메일을 요청 나타나고, PHP 파일은 그 값을 얻을 것입니다 :

는 HTML 파일의 양식 코드입니다 거기 도착. 여기

는 PHP 파일입니다 : 그래서,

<?php 
if (isset($_POST['submit'])) { 

$smtpinfo['host'] = 'localhost'; 
$smtpinfo['port'] = '25'; 
$smtpinfo['auth'] = true; 
$smtpinfo['username'] = 'xxx'; 
$smtpinfo['password'] = 'xxx'; 

$nome = $_POST['cf_name']; 
$email = $_POST['cf_email']; 
$mensagem = $_POST['cf_message']; 

require_once "Mail.php"; 

$body = "Nome: ".$nome; 
$body.= "\n"; 
$body.= nl2br($mensagem); 

$headers = array ('From' => $email, 
'To' => $smtpinfo["username"], 
'Subject' => 'Encomenda Website'); 

$mail_object = Mail::factory('smtp', $smtpinfo); 

$mail = $mail_object->send($smtpinfo["username"], $headers, $body); 

if (PEAR::isError($mail)) { 
echo ("<p>" . $mail->getMessage() . "</p>"); 
} else { 
echo ('<b><font color="FFFF00">Mensagem enviada com sucesso para </b>' . $email . '<br><br></font>'); 
}} 
?> 

이 PHP가 동일한 사이트에있는 문의 양식에 제대로 작동 괜찮아, 문제는, PHP로 HTML 양식에서 데이터를 그 때문에 결코 얻을 것으로 보인다 "POST POST 제출이 설정되어있는 경우"를 전달합니다. 이유를 모릅니다.이 파일에 도착하기 전에 제출 버튼을 누르기 때문입니다.

아무도 도와 줄 수 있습니까? 고맙습니다.

+0

'$ _POST' 배열을 덤프 해 보셨습니까? 또한 공급자를 변경 했으므로 간단한 PHP 스크립트를 실행하고 PHP가 적절하게 설정되었는지 확인할 수 있습니까? – dethtron5000

+0

PHP 파일의 이름이 여전히 동일합니까? 나는 아직도 lista.php를 의미합니까? – Freelancer

+1

양식에 이름 속성을 부여하고 이름에 isset을 사용하려고 시도 했습니까? 또한 제출 버튼에 hidden = true 속성이있는 이유는 무엇입니까? 나는 숨겨진 것이 사실이라고 생각하지 않는다. – briosheje

답변

0

이미지를 숨겨진 버튼이 아닌 제출으로 사용하고 있습니다. 따라서 이미지 입력의 이름을 "제출"으로 변경하면 제대로 작동합니다. 당신이 <input type="image" ....를 사용하는 경우

<input type="image" name="submit" value="Enviar Lista por Email" ........ 

이 대안 제출 버튼 역할을합니다. 따라서 숨겨진 버튼을 없애고 이미지 입력 ​​"이름 바꾸기"를 바꿀 수 있습니다. 양식에서

+0

그것은 그저 좋은 캐치, 도움 주셔서 감사합니다. 숨겨진 것이 효과적이지 않은 것입니다. 나는 그들을 성공으로 숨겨 뒀습니다. 감사. – Cachirro

3

당신은

<input type="image" name="lista" value="Enviar Lista por Email" src="imagens/lista_email.png" width="40" height="40" onclick="this.form.elements['cf_message'].value = lista_mail;this.form.elements['cf_name'].value = prompt('Escreva o seu nome:',  '');this.form.elements['cf_email'].value = prompt('Escreva o seu email:', '');"> 
<input name="submit" type="submit" value="Enviar" hidden="yes" class="obscure"> 

을 가지고 있지만 당신은 단지 name="lista"과 이미지를보고있다 그래서이 요소가 숨겨져 제출합니다.

그런 다음 PHP에서 $_POST['submit']을 확인하고 있지만 실제로 이미지를 클릭하면 $_POST['lista']이 표시됩니다.

그래서 사용하려는 이미지, 제출 또는 이미지 또는 둘 모두에 달려 있습니다.

+0

입력 해 주셔서 감사합니다. – Cachirro

0
<script type="text/javascript"> 
    var lista_mail = 'super'; 
</script> 

<form id="lista" action="lista.php" method="post"> 
<input name="cf_name" type="text" size="50" hidden="yes" class="obscure"> 
<input name="cf_email" type="text" size="50" hidden="yes" class="obscure"> 
<textarea name="cf_message" cols="45" rows="10" hidden="yes" class="obscure"></textarea> 
<input type="submit" name="submit" value="Enviar Lista por Email" src="imagens/lista_email.png" width="40" height="40" `enter code here`onclick="this.form.elements['cf_message'].value = `enter code here`lista_mail;this.form.elements['cf_name'].value = prompt('Escreva o seu nome:',  '');this.form.elements['cf_email'].value = prompt('Escreva o seu email:', '');"> 
<input name="submit" type="submit" value="Enviar" hidden="yes" class="obscure"> 
</form> 

당신은 CSS로 배경으로 버튼을 제공하는 이미지를주고 싶다면. 나는 유형 = 이미지를 제출하기 위해 이름 = 'lista'를 post ur가 $ _post [ 'submit']에 체크인하는 것처럼 제출하도록 한 가지 더 변경했습니다. 자바 스크립트 매개 변수 lista_mail이 누락되어 있는지, 미리 정의되어 있는지, 나는 스크립트 태그에 정의했다.

+0

입력 해 주셔서 감사합니다. – Cachirro

관련 문제