PHP新手问题 - 登录和Cookie

时间:2013-01-28 00:36:51

标签: php html forms cookies login-system

我刚开始使用PHP,很抱歉,如果我感到困惑。

我创建了我的索引页面(index.php),通过使用HTML进行布局并使用CSS进行样式化。

我有一些“问题”,我想问这些问题,以便对我需要查看或做的事情有一个基本的了解。

所以在我的主页(index.php)上我有一个注册和登录表单。我不一定担心注册表单,但更多关于登录表单。我还找到了一个关于如何做到这一点的教程,但它的工作方式与我希望它的工作方式有所不同。

我需要用户登录并转到控制面板(可能是control.php)。我猜这很简单。但是如果用户出错,我需要在索引页面上显示错误消息(在登录表单下)。所以我需要创建一个名为login.php的单独页面来设置表单上的操作,或者我应该将操作设置为index.php并将日志放在主页上的代码中。

另一件事是语言转换者。首先,我用法语,西班牙语,当然还有英语提供这个网站。我有一个选择框,onchange运行一个javascript函数,将所有文本(使用.InnerHTML)更改为该特定语言,但我想确保用户每次访问该网站时都不必这样做。我猜你用的是饼干。但是我该怎么做呢?通过使用“表单”,我可以(在页面加载)检查,看看是什么语言,并访问www.mysite.com/index.php?english ..我对此完全是新的..所以基本上,我是问你会怎么做?我可以保留Javascript函数,还是必须将其重新编码为PHP(文本转换器)?

任何评论,答案或建议都表示赞赏!

谢谢! -Ryan

2 个答案:

答案 0 :(得分:0)

结构完全取决于您 - 您可以在一个页面上拥有所有内容,或者拥有大量页面(索引,登录,控制,错误等)。一旦您的网站增长,您需要决定哪种方法最有效。

关于语言更改,您可以扩展您的Javascript以设置语言cookie。在每个页面的顶部(考虑包含或配置文件的好时间,所以你不必重复你的代码)你需要检查该cookie,如果它存在并且它具有适当的值,你可以或者在页面加载后触发你的Javascript更改它,或者使用PHP自动生成翻译页面。

答案 1 :(得分:-1)

理想情况下,我们会看到您自己的一些代码......但是......

  

我需要用户登录并转到控制面板(可能是control.php)。我猜这很简单。

1)您需要为HTML表单命名,并为其指定index.php;

请参阅:http://www.w3schools.com/tags/tag_form.asp

<form action="index.php" method="post">

2)使用合适的ID和名称命名您的UserName和登录框;

请参阅:http://www.w3schools.com/tags/att_input_name.asp

<input type="text" name="name"><br>
<input type="text" name="password"><br>

3)使用内联PHP添加Div标记,以便让用户知道他们的用户名或密码是否不正确;

请参阅:http://www.w3schools.com/php/default.asp

<div><?PHP echo $ErrorText ?></div>

4)添加提交按钮

<input type="submit" value="Login">

5)添加一些PHP,在提交表单时读取登录和密码框的PostBack值;

请参阅:http://www.w3schools.com/php/php_post.asp

$UserName = $_POST['name'];
$Password= $_POST['password'];

6)添加一些代码和SQL来检查用户名和密码;

请参阅:http://php.net/manual/en/mysqli.quickstart.php

$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    die();
}

if (!($stmt = $mysqli->prepare("SELECT * FROM Users WHERE UserName = '$UserName'))) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
    die();
}

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
    die();
}

if (!($res = $stmt->get_result())) {
    echo "Getting result set failed: (" . $stmt->errno . ") " . $stmt->error;
    die();
}

if ($res->row_count > 1) {
    echo "Too many users!";
    die();
    }

$row = $res->fetch_assoc();

7)检查密码,如果正确,请重定向到控制面板,否则报告错误;

if ($row['Password'] == $Password)
{
    header('Location: http://www.example.com/control.php');
}
else
{
    $ErrorText = "Incorrect Username or Password!";
}

您还需要将用户信息存储为Cookie或会话。有关此信息,请参阅; http://www.w3schools.com/php/php_cookies.asphttp://www.w3schools.com/php/php_sessions.asp

对于语言转换者,正如Shomz所说,有很多方法可以做到这一点。但是使用PHP显示所有文本是最好的方法。

请注意......我没有测试过上面的任何代码,所以可能会出现奇怪的错误......但是这应该让你去了!