在屏幕上显示用户的用户名。获取“未定义索引”错误

时间:2014-06-20 11:06:18

标签: php html mysql phpmyadmin xampp

好的,所以我试图在index.php上显示用户名字作为问候消息,比如'Hello,(用户名字),但我对所有这些php的东西都很新,所以我真的无法弄清楚这该怎么做。我尝试按照一个简短的教程,但每当我尝试用'print $ _POST ['first_name']打印第一个名字时,我得到一个未定义的索引错误....可能是一个愚蠢的问题,但我只是想不通。

如果重要的话,这是我的db_connect.php:

<?php
$host = "localhost";
$user = "root";
$pass = "";
$db = "Byt til Nyt";
$ms = mysql_pconnect($host, $user, $pass);
if ( !$ms )
{
echo "Could not connect to database.";
}

mysql_select_db("$db");

?>

这是我的register.php的简短版本:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>Register</title>
<?php
include('includes/db_connect.php');
if (@$_GET["op"] == "reg") {
    $bInputFlag = false;
    foreach ($_POST as $field) {
        if ($field == "") {
            $bInputFlag = false;
        } else {
            $bInputFlag = true;
        }
    }
    if ($bInputFlag == false) {
        die("Der opstod et problem med dine oplysninger. Gå tilbage og prøv igen.");
    }
    $q = "INSERT INTO 'users' ('first_name','last_name','email','username','password')" . "VALUES ('" . $_POST["username"] . "'," . "PASSWORD ('" . $_POST["password"] . "')," . "'" . $_POST["email"] . "')";
    $r = mysql_query($q);
    if (!mysql_insert_id()) {
        die("Der opstod en fejl. Du er ikke blevet tilføjet til databasen.");
    } else {
        Header("Location: register.php?op=thanks");
    }
} elseif (@$_GET["op"] == "thanks") {
    echo "<h2>Tak fordi du registrerede!</h2>";
}
?>
</head>
<body>
<form method="post" action="includes/verify.php" name="register">
//recaptcha script here
<label>First name</label>
<input type="text" name="first_name" placeholder="Your first name" required><br>
<label>Last name</label>
<input type="text" name="last_name" placeholder="Your last name" required><br>
//some more input fields and stuff

这是我的index.php的简短版本:

<?php
session_start();
include("includes/functions.php");
include("includes/db_connect.php");
?>
<!DOCTYPE html>
<html lang="dk">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
<title>
Byt til Brugt
</title>
<link rel="stylesheet" href="index.css">
</head>
<body background="http://i.imgur.com/urLzQr5.jpg" bgcolor="navy">
<div class="menu">
<p>Velkommen, <?php if (isset($username)) {
print $_POST['first_name'];
}
?>
</p>

那么,问题是什么? :/任何帮助都会非常感激,我一直试图解决这个问题2天....只要说你是否需要我的login.php或其他任何东西(:非常感谢!对不起我的英语不好。

2 个答案:

答案 0 :(得分:0)

$_POST['first_name']  

可能未设置,请尝试

<?php if (isset($_POST['first_name'])) {
print $_POST['first_name'];
}
?>

答案 1 :(得分:0)

您没有用户POST到您的索引页面,因此当您尝试访问它时,$ _POST变量为空。

您的注册表格发布到包含/ verify.php

如果用户使用POST方法提交表单,则仅为您填充变量$ _POST。所以你永远不要指望它包含数据,总是先检查它(至少为空($ _ POST))。

您可能打算使用其用户名从数据库中检索名称。 (可能存储在会话中?) 填充变量之后,您只需在需要时回显该变量,然后您将获得他们在注册时输入的第一个名称。

此外,由于同样的原因,您的注册页面无法正常工作。您发布到includes / verify.php并从您的代码判断它看起来像您的验证页面将用户重定向回register.php?op = reg这意味着您丢失了所有的POST数据,除非您使用javascript发回to register.php?op = reg(但这不是必需的)

另外,你的MySQL错了。您正尝试插入5个字段

'first_name','last_name','email','username','password'

并且您只传递3个值

'username', 'password', 'email' 

您应该传递5个值,并且顺序应该与列列表匹配。如果您为用户名和密码设置了默认值,那么这可能不会导致MySQL错误,但您的数据将无法与预期的字段匹配。
(用户名为first_name,密码为last_name,电子邮件为电子邮件,用户名不包含任何密码)

你提到你正在学习教程,所以也许最好只是寻找另一个教程。考虑到你应该避免使用mysql_connect或mysql_pconnect作为数据库方法,也许更新一点。