<?php
$to = "service@mysite.no";
$subject = "Reparasjon av " . $_REQUEST['type'] . " fra mysite.no";
$types = if(!empty($_REQUEST['type'])) {echo($_REQUEST['type'] . ". ");};
$reps = if(!empty($_REQUEST['rep'])) {echo($_REQUEST['rep']);};
$message = $types . . $reps . "\n\nKommentarer:\n" . $_REQUEST['kommentarer'] . "\n\nFra:\n" . $_REQUEST['navn'] . "\nTelefon: " . $_REQUEST['telefon'] . "\nEmail: " . $_REQUEST['email'] . "\nBosted: " . $_REQUEST['bosted'];
$headers = "From: " . $_REQUEST['email'] . "\r\n" . 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n";
if (mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $headers)) {
header( 'Location: http://www.mysite.no/' );
} else {
header( 'Location: http://www.mysite.no/' );
}
?>
它说第4行有一个T_IF错误。问题是什么?
答案 0 :(得分:3)
你不能在那里使用if
,这是一个语法错误。技术上if
是一个陈述,而不是表达。这意味着您无法在$types = if (...)
等作业中使用它。
答案 1 :(得分:2)
if()
是一种语言结构,而不是一种功能。它不返回任何内容,也不能分配给变量。
$types = if(!empty($_REQUEST['type'])) {echo($_REQUEST['type'] . ". ");};
^^^^^^^^--- not allowed
尝试:
if (!empty($_REQUEST['type']) {
$types = $_REQUEST['type'];
}
同样,echo会导致直接输出到客户端。它不会“返回”任何可以分配的内容。
答案 2 :(得分:1)
IF语句不返回值,因此将其赋值给变量什么也不做(甚至可能导致错误!)从if语句的末尾开始分号。
试试这个:
if (!empty($some_variable)) {
$my_var = $some_variable;
}
答案 3 :(得分:0)
我能看到的第一件事是在行$message = …
中有一个双连接运算符,这显然是一个语法错误。应该(并且应该使用转义输出):
$message = $types . $reps . "\n\nKommentarer:\n" . $_REQUEST['kommentarer'] . "\n\nFra:\n" . $_REQUEST['navn'] . "\nTelefon: " . $_REQUEST['telefon'] . "\nEmail: " . $_REQUEST['email'] . "\nBosted: " . $_REQUEST['bosted'];
PS。上帝,这段代码太错了(仍然没有逃避/清理)......
<?php
$to = "service@mysite.no";
$subject = "Reparasjon av " . $_REQUEST['type'] . " fra mysite.no";
$types = !empty($_REQUEST['type']) ? $_REQUEST['type'] . ". " : '';
$reps = !empty($_REQUEST['rep']) ? $_REQUEST['rep'] : '' ;
$message = $types . $reps . "\n\nKommentarer:\n" . $_REQUEST['kommentarer'] . "\n\nFra:\n" . $_REQUEST['navn'] . "\nTelefon: " . $_REQUEST['telefon'] . "\nEmail: " . $_REQUEST['email'] . "\nBosted: " . $_REQUEST['bosted'];
$headers = "From: " . $_REQUEST['email'] . "\r\n" . 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n";
if (mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $headers)) {
header( 'Location: http://www.mysite.no/' );
} else {
header( 'Location: http://www.mysite.no/' );
}
?>
答案 4 :(得分:0)
行
$types = if(!empty($_REQUEST['type'])) {echo($_REQUEST['type'] . ". ");};
$reps = if(!empty($_REQUEST['rep'])) {echo($_REQUEST['rep']);};
无效。 if
语句不是PHP中的表达式;它们不会计算为可以赋给变量的值。你也没有从if
“回归”任何东西; echo
写入屏幕,它不会将if语句中的值“回显”到调用范围。
您需要以下内容:
if(!empty($_REQUEST['type'])) {
$types = ($_REQUEST['type'] . ". ");
}