【发布时间】:2012-11-12 01:36:57
【问题描述】:
这是在我的页面中,它应该检查用户是否已登录 http://carbonyzed.co.uk/Websites/Jason/sites/2/test/login_success.php
但任何人都可以评估它,而不仅仅是那些登录的人
<?php
session_start();
if( isset($_SESSION["myusername"]) ){
header("location:main_login.html");
}
?>
我试过了
if(isset($_SESSION["myusername"])){
和
if(isset($_SESSION[$myusername])){
登录代码也许没有创建会话?
<?php
ob_start();
$host="ClubEvents.db.9606426.hostedresource.com"; // Host name
$username="ClubEventsRead"; // Mysql username
$password="Pa55word!"; // Mysql password
$db_name="ClubEvents"; // Database name
$tbl_name="members"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about 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=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_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";
}
ob_end_flush();
?>
【问题讨论】:
-
session_register() 从 php 版本 5.3 开始贬值,并从 php 版本 5.4 中删除。所以请不要再使用它了。 php.net/manual/en/function.session-register.php
-
感谢您发布有效的数据库凭据和服务器的主机名。您可能应该为您的
Administrative用户选择一个比password更强的密码,并且至少要查看salting 密码,而不是将其存储为普通的MD5。最后,不要只是从这篇文章中编辑凭据,它们仍会在编辑日志中。您必须在服务器上更改它们。此外,如果您将member密码存储为纯文本,您将在夜间被狂犬病山羊吃掉。 -
它是一个测试数据库,我的实际数据库不同
-
我想添加它,以便人们在觉得需要时可以测试它
-
你的葬礼。如果您付钱给我,我什至不会将这样的只读 mySQL 帐户暴露在互联网上。