好的,所以我试图在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或其他任何东西(:非常感谢!对不起我的英语不好。
答案 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作为数据库方法,也许更新一点。