我想知道是否有人可以帮助我。我的浏览器正在执行我的大部分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"
答案 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(如果我错了,请纠正我。)。