我知道这个问题对你们来说看起来很简单,但我找不到关于这个的教程或主题。我一直在努力寻找几天,但没有运气。我想要做的是当用户登录时,他们的名字将显示在每个页面菜单栏的顶部。请,请,请任何帮助或建议将不胜感激。
This is the image when there is no login user
这是我编写的代码。我尝试了 javascript 和 session ,但无法正确完成。
<?php
error_reporting(E_ALL & ~E_NOTICE);
session_start();
if($_POST['LogIn'])
{
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "dbuseraccounts";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$email = strip_tags($_POST['Email']);
$password = strip_tags($_POST['Password']);
$sql = "SELECT UserID, Email, Password FROM users WHERE Email = '$email'";
$query = mysqli_query($conn, $sql);
if($query)
{
$row = mysqli_fetch_row($query);
$userid = $row[0];
$dbEmail = $row[1];
$dbPassword = $row[2];
}
if($email == $dbEmail && $password == $dbPassword)
{
$_SESSION['Email'] = $email;
$_SESSION['id'] = $userid;
}
else
{
$message = "Incorect username or password";
echo "<script type='text/javascript'>alert('$message');</script>";
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title>
<link href="css/bootstrap.css" rel="stylesheet" type="text/css">
<link href="css/stylesheet.css" rel="stylesheet" type="text/css">
<style type="text/css">
body {
margin-left: 0px;
margin-right: 0px;
}
</style>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<div class="container-fluid">
<div class="header">
<nav class="navbar navbar-default navbar-fixed-top">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" id="Register" aria-expanded="false" data-toggle="collapse" data-target="#topFixedNavbar1"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button>
<a class="navbar-brand" href="index.html">Neo</a></div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="topFixedNavbar1">
<ul class="nav navbar-nav">
<li class="active"></li>
<li></li>
</ul>
<form class="navbar-form navbar-left" role="search">
<div class="form-group"> </div>
</form>
<ul class="nav navbar-nav navbar-right">
<li><a href="Home.php">Home</a></li>
<li><a href="Services.html">Services</a></li>
<li><a href="Promo.html">Promo</a></li>
<li><a href="Promo.html">About Us</a></li>
<li><a href="ContactUs.html">Contact Us</a></li>
<li><a href="login.php"><?php echo $_SESSION["Email"]?></a></li>
<li><a id="logout">Logout</li>
<li class="dropdown">
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container-fluid -->
</nav>
</div>
<div class="content">
<h1 id="h1Contactus">Login</h1>
<form id="RegisterForm" name="RegisterForm" method="post">
<div class="FormElement"><input name="Email" type="email" autofocus required="required" class="TField" id="Email" placeholder="Email Address"></div>
<div class="FormElement"><input name="Password" type="password" required="required" class="TField" id="Password" placeholder="Password"></div>
<div class="FormElement">
<input name="LogIn" type="submit" class="button" id="LogIn" value="Log In">
</div>
</form>
</div>
<div class="footerStick">
<footer>© 2015 Neo</footer>
</div>
</div>
</div>
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>
最佳答案
This is NOT secure, this is just a tutorial.
如何实现...
首先当用户成功登录时创建一个 $_SESSION[] 变量。 $_SESSION[] 变量几乎用在每个运行 PHP 的网站上,您可以通过将下面的代码添加到页面顶部来启动普通 session 。
session_start();
其次,当您的代码显示用户登录成功时,创建一个 session 变量,如下所示。
$_SESSION['loggedIn'] = true;
第三,您需要创建某种代码来检查用户是否已登录,示例代码如下所示。
if (isset($_SESSION['loggedIn'])) {
// code to execute if the user is logged in
} else {
// code to execute if the user is not logged in
}
最后,当您注销时,您需要使用以下代码销毁 session 并删除所有 $_SESSION[] 变量。
$_SESSION = array();
session_destroy();
根据 if 语句执行 HTML 代码:
<?php
if (isset($_SESSION['loggedIn'])) {
?>
<p>Logged In!</p>
<?php
} else {
?>
<p>Logged Out!</p>
<?php
}
?>
如果你想显示用户名,你需要创建一个名为 username 的 $_SESSION[] var 并使用 echo the $_SESSION[] var。
// To Echo
<?= $_SESSION['username']; ?>
// To Create
<?php $_SESSION['username'] = 'someusername'; ?>
这里有一些资源可能会在安全方面对您有所帮助,我只是查看了您的代码,它很简单但并不真正安全。
http://php.net/manual/en/session.security.php
http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
关于javascript - 用户登录时在顶部显示用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39189481/
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article
我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c
我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。
我在新的Debian6VirtualBoxVM上安装RVM时遇到问题。我已经安装了所有需要的包并使用下载了安装脚本(curl-shttps://rvm.beginrescueend.com/install/rvm)>rvm,但以单个用户身份运行时bashrvm我收到以下错误消息:ERROR:Unabletocheckoutbranch.安装在这里停止,并且(据我所知)没有安装RVM的任何文件。如果我以root身份运行脚本(对于多用户安装),我会收到另一条消息:Successfullycheckedoutbranch''安装程序继续并指示成功,但未添加.rvm目录,甚至在修改我的.bas
目前,Itembelongs_toCompany和has_manyItemVariants。我正在尝试使用嵌套的fields_for通过Item表单添加ItemVariant字段,但是使用:item_variants不显示该表单。只有当我使用单数时才会显示。我检查了我的关联,它们似乎是正确的,这可能与嵌套在公司下的项目有关,还是我遗漏了其他东西?提前致谢。注意:下面的代码片段中省略了不相关的代码。编辑:不知道这是否相关,但我正在使用CanCan进行身份验证。routes.rbresources:companiesdoresources:itemsenditem.rbclassItemi
如果我在模型中设置验证消息validates:name,:presence=>{:message=>'Thenamecantbeblank.'}我如何让该消息显示在闪光警报中,这是我迄今为止尝试过的方法defcreate@message=Message.new(params[:message])if@message.valid?ContactMailer.send_mail(@message).deliverredirect_to(root_path,:notice=>"Thanksforyourmessage,Iwillbeintouchsoon")elseflash[:error]