【问题标题】:major php issues主要的php问题
【发布时间】:2010-12-25 08:11:24
【问题描述】:

我正在尝试创建一个简单的登录系统。当我运行登录表单(使用正确的用户名和密码)时,它似乎没有运行 php.ini。有什么建议吗?

<?php
$host="linuxserver"; // Host name
$username="jparry2"; // Mysql username
$password=""; // Mysql password
$db_name="jparry2"; // Database name
$tbl_name="customer"; // Table name

// Connect to server and select databse.
mysqli_connect("$host", "$username", "$password")or die("cannot connect");
mysqli_select_db("$db_name")or die("cannot select DB");

// username and password sent from form 
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysqli_query($sql);

// Mysql_num_row is counting table row
$count=mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file “login_success.php”
session_register("myusername");
session_register("mypassword"); 
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>

<html>
<body>

</body>
</html>

编辑添加的登录表单代码

<html>
<head><title>Login</title></head>
<body>


<form action='checklogin.php'
                method='POST' style='margin: .5in'>
    <p><label for='user_name' style='font-weight: bold;
          padding-bottom: 1em'>USER ID: </label>
       <input type='text' name='myusername' id='myusername'
          value='' /></p>
    <p><label for='password' style= 'font-weight: bold'>Password: </label>
       <input type='password' name='mypassword' id='mypassword'
          value='' /></p>
    <p><input type='submit' value='Login'> </p>
       <input type='hidden' name='sent' value='yes'/>

<a href= "/home/jparry2/public_html/register.php">Register</a>

    </form>

</body>
</html>

【问题讨论】:

  • 浏览器的源代码是怎么说的?你在那里看到了什么?
  • 我认为你应该指定更多信息然后这个。例如,您使用的是什么操作系统。什么是问题?没有显示输出。做一个简单的 工作?
  • 能否为您的登录表单添加代码?
  • 一个更具体的标题会很好
  • 您必须检查您是否正确安装和配置了 php。此外,告诉我们您更改了一些内容 来解决您的主要 php 问题对我们没有多大帮助。

标签: php sql database login


【解决方案1】:

如果您的浏览器要求您下载 php 文件,则表示未调用 php 解释器。即您没有正确安装或配置它。

【讨论】:

    【解决方案2】:

    您是否收到任何错误消息?对我来说似乎没问题。例如,您是否尝试过在 if 块中回显某些内容?这可能有助于您了解问题所在。

    您可以检查或尝试一些事情:

    • 您有错误报告吗?
    • 放`var_dump($_POST);死();在页面顶部查看 $_POST 变量是否正确提交。
    • 确保在header() 函数之前没有向浏览器输出任何内容。如果您关闭了 error_reporting 并将某些内容输出到浏览器,则使用 header() 将导致致命错误,这可能会导致空白页。

    您的代码中的一些其他注释:

    • 您不需要将变量放在双引号内,它们会自行工作:mysqli_select_db("$db_name") 变为 mysqli_select_db($db_name)
    • 如果您正在使用mysql_real_escape_string,则不需要stripslashes()。后者将自行处理这项工作。

    【讨论】:

      【解决方案3】:

      在某些浏览器中,Location 标头区分大小写,因此您的header("location:login_success.php"); 调用可能不起作用(header documentation page 上的comment 表明这发生在 IE7 中)。尝试将位置中的l 大写。

      【讨论】:

      • IIRC,大多数浏览器的标题都遵循标准:大写名称和“:”后的空格。
      【解决方案4】:

      你没有做任何“session_start()”,所以你的会话不能被使用。

      也许您需要在“login_success.php”脚本中启动它。

      【讨论】:

        【解决方案5】:

        我同意丹尼尔的观点,修改header("Location: login_success.php");

        另外,作为附注,因为在撰写本文时,并没有清楚地解释什么不起作用,但是您在添加会话变量时需要session_start()。

        也尝试使用$_SESSION['variable'],因为session_register() 从PHP: session_register 获取的PHP 5.30 已被弃用,尝试这样的操作

        if($count==1){
        session_start();
        // Register $myusername, $mypassword and redirect to file “login_success.php”
        $_SESSION['username'] = $myusername;
        $_SESSION['mypassword'] = $mypassword;
        session_write_close(); // makes sure nothing was lost during redirect
        header('Location: nextpage.php');
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-25
          • 2019-07-15
          • 2011-04-09
          • 2012-07-16
          • 2011-12-29
          • 2011-04-16
          • 2014-01-11
          相关资源
          最近更新 更多