php IF在我的代码中不起作用

When i run this I allways get: (what ever is wdl form).

copy ("templates/colors/win.txt", "tips/$today/color.txt");
copy ("templates/text/win.txt", "tips/$today/wdl.txt");

which means the last commands, the if on my php code is not working. the code:

<?php
echo ("Setting up colors...");
if($_GET["wdl"] == "D");
{
    copy ("templates/colors/dr.txt", "tips/$today/color.txt");
    copy ("templates/text/dr.txt", "tips/$today/wdl.txt");
}
if($_GET["wdl"] == "L");
{
    copy ("templates/colors/lose.txt", "tips/$today/color.txt");
    copy ("templates/text/lose.txt", "tips/$today/wdl.txt");
}
if($_GET["wdl"] == "W");
{
    copy ("templates/colors/win.txt", "tips/$today/color.txt");
    copy ("templates/text/win.txt", "tips/$today/wdl.txt");
}
?>

how can i fix it?

the solusion was to remove the: ex: ; from if($_GET["wdl"] == "W");

is best way to replace if with switch statement

<?php
echo ("Setting up colors...");
switch($_GET["wdl"]) {
  case "D" :
       copy ("templates/colors/dr.txt", "tips/$today/color.txt");
       copy ("templates/text/dr.txt", "tips/$today/wdl.txt");
       break;
  case "W" :
     copy ("templates/colors/win.txt", "tips/$today/color.txt");
     copy ("templates/text/win.txt", "tips/$today/wdl.txt");
      break;
  case "L" :
     copy ("templates/colors/lose.txt", "tips/$today/color.txt");
     copy ("templates/text/lose.txt", "tips/$today/wdl.txt");
      break;
 }
?>

Remove the ; at the end of the if, before the {

if($_GET["wdl"] == "D");
{

should be

if($_GET["wdl"] == "D")
{

and so on..

; is an instruction separator. Read more here

This is a common area of mistake, so to avoid this, you could do

if($_GET["wdl"] == "D") {
   ...

That way you can avoid the accidental ; after the looping constructs

So the code block looks like this:

<?php
    echo ("Setting up colors...");
    if($_GET["wdl"] == "D") {
        copy ("templates/colors/dr.txt", "tips/$today/color.txt");
        copy ("templates/text/dr.txt", "tips/$today/wdl.txt");
    }
    if($_GET["wdl"] == "L") {
        copy ("templates/colors/lose.txt", "tips/$today/color.txt");
        copy ("templates/text/lose.txt", "tips/$today/wdl.txt");
    }
    if($_GET["wdl"] == "W") {
        copy ("templates/colors/win.txt", "tips/$today/color.txt");
        copy ("templates/text/win.txt", "tips/$today/wdl.txt");
    }
?>
if($_GET["wdl"] == "W");

Because of semicolon(;) after IF statement

Remove semicolon after all IF statement. It looks like

if($_GET["wdl"] == "D") {
    copy ("templates/colors/dr.txt", "tips/$today/color.txt");
    copy ("templates/text/dr.txt", "tips/$today/wdl.txt");
}
if($_GET["wdl"] == "L") {
    copy ("templates/colors/lose.txt", "tips/$today/color.txt");
    copy ("templates/text/lose.txt", "tips/$today/wdl.txt");
}
if($_GET["wdl"] == "W") {
    copy ("templates/colors/win.txt", "tips/$today/color.txt");
    copy ("templates/text/win.txt", "tips/$today/wdl.txt");
}

Try this:

if($_GET["wdl"] == "D"){
    copy ("templates/colors/dr.txt", "tips/$today/color.txt");
    copy ("templates/text/dr.txt", "tips/$today/wdl.txt");
}else if($_GET["wdl"] == "L"){
    copy ("templates/colors/lose.txt", "tips/$today/color.txt");
    copy ("templates/text/lose.txt", "tips/$today/wdl.txt");
}else if($_GET["wdl"] == "W"){
    copy ("templates/colors/win.txt", "tips/$today/color.txt");
    copy ("templates/text/win.txt", "tips/$today/wdl.txt");
}

You need to remove the ; from the end of the if statements and you can also make it an else if to prevent it from testing the remaining statements once one matches.