2011-09-08 9 views
0
<?php 
$to = "[email protected]"; 
$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エラーがあります。何が問題なのですか?このT_IFエラーは何を意味しますか?

+0

それは "' 'Token_IF' if'が有効ではありません(' if')い" という意味:

は次欲しいです。なぜそれが有効な式でないのかについてtherinの答えを参照してください(式だけが右辺値として使用できます)。 –

答えて

3

あなたがそこにifを使用することはできません、それは構文エラーです。技術的にはifは式ではなく、式です。つまり、$types = if (...)のような割り当てでは使用できません。

1

IF文は値を返さないので、変数に代入すると何も起こりません(エラーの原因になることもあります)。if文の最後からセミコロンを離します。

ことは、これを試してみてください:

if (!empty($some_variable)) { 
    $my_var = $some_variable; 
} 
2

if()は、関数ではなく、言語構造です。何も返さず、変数に代入することはできません。

$types = if(!empty($_REQUEST['type'])) {echo($_REQUEST['type'] . ". ");}; 
^^^^^^^^--- not allowed 

試してみてください。

if (!empty($_REQUEST['type']) { 
    $types = $_REQUEST['type']; 
} 

同様に、クライアントへの直接出力を引き起こすエコー。割り当て可能なものを「返す」わけではありません。

+1

"if()は文ではなく、式ではない"(PHPのように、include、print、evalなどの言語構造体によっては何かが返される) – NikiC

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このコード(代わりに、まだありませんエスケープ/ sanitazation)とそんなに間違っている神、...

<?php 
$to = "[email protected]"; 
$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/'); 
    } 
?> 
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'] . ". "); 
} 
関連する問題