2011-05-12 134 views
1

好吧我确定我在这里做错了什么,但我不能让这些PHP变量显示为内联!PHP Echo没有显示

编辑:这是代码现在看起来像,stil不工作。

<?php 
ini_set('display_errors', true); error_reporting(E_ALL); 
//declare variables 
$name = $_POST['name']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
$comments = $_POST['comments']; 
$date = $_POST['date']; 
$time = $_POST['time']; 
$company = 'Test company'; 
$dateraw = $date; 

$confirmText = "Thank you " . $name . " for booking your appointment with us. We look forward to seeing you at " .$time . " on " . $dateraw . ". You will receive a confirmation email shortly."; 

//strip of invalid chars 
$date = str_replace('/' , '.' , $date); 

//fopen 
$pathToMe = dirname(__FILE__); 
$fileName = $pathToMe . "/days/" . $date . ".txt"; 
$fileHandle = fopen($fileName, 'w') or die("Failure."); 
fwrite($fileHandle, $name . "\n" . $email . "\n" . $phone . "\n" . $date . "\n" . $time . "\n" . $comments . "\n" . "\n"); 
fclose($fileHandle); 

//email to company 
$to = '[email protected]'; 
$subject = 'Apointment scheduled online'; 
$body = "An apointment was just scheduled online.\n" . $name . "\n" . $email . "\n" . $phone . "\n" . $date . "\n" . $time . "\n" . $comments . "\n" . "\n" . "Please follow up to confirm."; 
if (mail($to, $subject, $body)) { 
    $companyConfirm = 'yes'; 
} else { 
    $companyConfirm = 'no'; 
} 

//client confirm 
$to = $email; 
$subject = 'Confirming your appointment'; 
$body = "Hello " . $name . "," . "\n" . "\n" . "You recently booked an appointment with " . $company . " on " . $date . " at " . $time . ".\n" . "\n" . "We will follow up soon to confirm."; 
if (mail ($to, $subject, $body)) { 
    $confirm = 'yes'; 
} else { 
    $confirm = 'no'; 
} 

print_r($_POST); 


?> 



<html> 
    <head> 

    </head> 
    <body> 

     <div id="jqt"> 

      <div id="home" class="current"> 
       <div class="toolbar"> 
        <h1>Scheduler</h1> 
       </div> 
        <ul class="edit rounded"> 
         <li><?php echo $confirmText; ?></li> 
        </ul> 
      </div> 
      </div> 
      </div> 
    </body> 
</html> 
+0

你是否获得了HTML输出而没有PHP变量被echo'd?或者你一无所获?你是在发布到页面(POST和这个输出之间没有重定向?) – HorusKol 2011-05-12 00:23:17

+0

我认为你太过信任你的数据输入。 '$ email = $ _POST ['email']'后面跟着'$ to = $ email'例如。 (SMTP注入。) – 2011-05-12 00:29:50

+0

谢谢@ian,但这纯粹是概念证明,不会公开。 @HorusKol变量正在正常发送(电子邮件确认正在发送,文本文件正在写入正常)。 – 2011-05-12 00:44:42

回答

1

你有头错误之前发送主体(尝试打开你的错误messges)。它发生在这里: <?php(行0)

$confirm = 'no'; 
} 
?> 

<?php session_start(); ?> 

为了解决这个问题,请确保您有一个<?phpsession_start之前,它已经在这之前没有空格,和你做不要使用BOM保存页面。

+0

删除了'session_start',因为我没有'$ _SESSION'变量,需要它来查看它是否有帮助。没有效果。 – 2011-05-12 00:46:51

0

也许尝试这种风格的行内的呼应,而不是:

<?php=$name;?>

或者尝试移动session_start()到你的代码的最顶部。

0

尝试在回显它们之前对每个变量使用rtrim。第二个建议是,为什么不产生在PHP脚本的完整的字符串以及

$display_message = "Thank you".$name."for booking your appointment with us. We look forward to seeing you at".$time."on".$dateraw."You will receive a confirmation email shortly"; 

然后,只需任何你喜欢的HTML部分内。

希望这有助于

+0

在PHP中创建消息有一个奇怪的效果。该字符串创建时没有任何变量。往上看。 – 2011-05-12 01:04:08