浏览器执行最多,但不是我的所有PHP

时间:2015-09-13 07:33:07

标签: php

我想知道是否有人可以帮助我。我的浏览器正在执行我的大部分PHP代码,但当它到达某一行时,它会打印代码而不是执行它。

我的代码是:

<!DOCTYPE html>
<html>
<body>

<?php


//Display registration form

function register_form(){


$date = date('D, M, Y');

echo <form action='?act=register' method='post'>

Username: <input type='text' name='username' size='30'><br>

Password: <input type='password' name='password' size='30'><br>

Confirm your password: <input type='password' name='password_conf' size='30'><br>

Email: <input type='text' name='email' size='30'><br>

<input type='hidden' name='date' value='$date'>

<input type='submit' value='Register'>

</form>;


}
?>

<?php


//Register users data.

function register(){


//Connecting to database

$connect = mysql_connect("localhost", "username" "password");

if(!$connect){

die(mysql_error());

}


//Selecting database

$select_db = mysql_select_db("database", $connect);

if(!$select_db){

die(mysql_error());

}
?>

<?php


//Collecting info

$username = $_REQUEST['username'];

$password = $_REQUEST['password'];

$pass_conf = $_REQUEST['password_conf'];

$email = $_REQUEST['email'];

$date = $_REQUEST['date'];


//Check input fields


if(!empty($username)){

die("Please enter your username!<br>");

}

if(!empty($password)){

die('Please enter your password!<br>');

}

if(!empty($pass_conf)){

die("Please confirm your password!<br>");

}

if(!empty($email)){

die("Please enter your email!");

}
?>

<?php


//Check username availability


$user_check = mysql_query("SELECT username FROM users WHERE username='$username'");

$do_user_check = mysql_num_rows($user_check);

//Check if email availability


$email_check = mysql_query("SELECT email FROM users WHERE email='$email'");

$do_email_check = mysql_num_rows($email_check);

//Display errors


if($do_user_check > 0){

die("Username is already in use!<br>");

}

if($do_email_check > 0){

die("Email is already in use!");

}

//Check if passwords match


if($password != $pass_conf){

die("Passwords don't match!");

}

?>

<?php

//Register user


$insert = mysql_query("INSERT INTO users (username, password, email) VALUES ('$username', '$password', '$email')");

if(!$insert){

die("There's little problem: ".mysql_error());

}


echo $username.", you are now registered. Thank you!<br><a href=login.php>Login</a>" ;


}
?>

<?php

switch($act){


default;

register_form();

break;


case "register";

register();

break;


}


?>
</body>
</html>

它打印了很多关闭?&gt;标签,但如果我删除标签以及它的开头对应物,它会打印出介于两者之间的所有代码。我在过去的几天里一直坚持这一点,真的需要一些帮助。提前谢谢。

更新 我想到了。我是从目录而不是地址执行的。 (不确定我说的是否正确)。因此,浏览器指向来自&#34; http://localhost:port/register.php&#34;的注册页面。它指向&#34; file:/// C:/xampp/htdocs/register.php"

1 个答案:

答案 0 :(得分:0)

您需要在回显的字符串周围添加双引号。 (双,因为你在标签内使用单引号)。如果删除php-tags,它将被解释为HTML,即它只会被发送到浏览器。 如果由于某种原因你讨厌引用,你可能想把它作为这里的文件:

echo <<<EOF
<form action='?act=register' method='post'>

Username: <input type='text' name='username' size='30'><br>
...
EOF 

您的代码中至少还有一个缺少的逗号,这将使该部分无法执行(在mysql_connect中)。 B.t.w.你不应该再使用mysql _ * - 类型的函数了。它们被标记为已弃用,并且容易使您的代码成功进行SQL注入攻击。我建议加入PDO。

就像wiw一样,正如评论中已提到的那样,执行此代码的浏览器不是。 PHP由Web服务器解释。实际执行浏览器的唯一脚本语言仍然是javascript(如果我错了,请纠正我。)。