草庐IT

关于网站用户身份验证的 PHP 最佳实践?

我用非常简单的php代码构建了几个网站,到目前为止都很好,但我碰巧现在担心主题“安全”我想知道在PHP中创建登录/身份验证过程的最佳方法是什么这是我目前所做的:在注册过程中,用户提交电子邮件和密码密码将作为md5字符串存储在mysql中,因此除用户之外的任何人都知道。当用户登录时,我做SELECT*FROMusertableWHEREemail=$emailsubmittedANDpass=md5($passsubmitted)那么如果结果数组的大小大于零,则意味着用户存在所以我设置session_start();$_SESSION['logged']='true';$_SESSION

php - 出于速度和效率目的通过引用传递参数

向函数传递参数时,如果函数不应该更改该参数的值,则惯例是按值传递。只有当函数要修改该变量时,我们才传递&byref。另一方面,我们确实知道,当通过引用传递时,PHP使用指针,而不是像通过值传递那样复制变量的副本。这在我脑海中提出了一个问题,我们不应该为了速度和效率目的不时通过引用将某些变量传递给我们的函数-即使我们不需要修改它们。在不对这个想法感到疯狂或完全滥用它的情况下,我想提供一个引用框架,说明我在这里谈论的变量或变量类型。它们主要是$dbh(数据库句柄)和非常大的变量。说实话,只有$dbh的!真的。在您看来,您认为这是一种好的做法还是您认为永远不应该这样做。让我们把这个问题归结为

php - 使用数据库中的列 ID 作为用户 ID 是否有任何问题

我总是在我的数据库中包含一个具有自动递增功能的列ID。我有什么理由不想将其用作社交网站的用户ID。该ID将被公众所知并用于URL等。我认为这比添加另一个功能来为成员创建单独的唯一ID更容易。在我在代码中使用它之前,只是想看看是否有其他人发现了任何问题。 最佳答案 ID本身会泄露信息,使第三方能够估计他或她在您网站上注册的日期。因此,如果Alice是Bob的friend,并且知道她去年注册,他在3天后注册,并且她的id是100,他的id是150,她就会知道Carol,她不是她的friend,当时在您的网站上注册了并且不是像Carol声

php - Active Record Delete 无法正常工作

我写了一个简单的函数来从数据库中删除数据,但是删除查询不正确我的模型代码如下:functionremovedata(){$userid=$this->input->post('userid');$this->db->where('userid',$userid);$deldata=$this->db->delete('userbasic');if($deldata==true){echo"DataRemovedSuccessfully";}else{echo"DeletionFailed";}}我已经加载了数据库并尝试了两个查询,即$this->db->where('userid',$

php - 通过 Chrome 扩展使用 PHPAuth/PHPAuth 登录网站

我开发了一个Chrome扩展程序,它调用我网站上的一些API,然后使用PHPAuth/PHPAuth进行身份验证。基本上,我让用户输入网站的用户名和密码作为扩展选项,然后在我的网站上调用登录API,如下所示。if(isset($_POST['email'])&&isset($_POST['password'])){$email=$_POST['email'];$password=$_POST['password'];if($auth->isLogged()){$userId=$auth->getSessionUID($_COOKIE[$authConfig->cookie_name])

php - 使用正则表达式删除存储的 apc key

是否可以使用一种方法使您能够使用正则表达式删除存储的apc条目?例如,当新数据输入数据库时​​,我想从缓存中删除一些用户查询,以便在下次运行查询时显示新数据。假设您有一个缓存的好友列表查询,但是当添加新好友时,该用户的所有缓存好友查询都将被删除......如果我有这样的用户好友列表键:$sql="SELECT*FROMfriendsWHEREuserId=:userId";$sqlKey=str_replace(":userId",$userId,$sql);$key=$userId."-friend".md5('query'.$sqlKey);$data=friendsArray;a

java - 无法解析属性 : userId. 用户名

我有以下实体类:@MappedSuperclasspublicclassAbstractEntityimplementsSerializable,Comparable{privatestaticfinallongserialVersionUID=1L;@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Basic(optional=false)@Column(name="id")protectedIntegerid;@OverridepublicintcompareTo(AbstractEntityo){returnthis.toS

java - 等效于 @JsonIgnore,但仅适用于使用 Jackson 的 xml 字段/属性转换

我有一个类,我正在使用Jackson对JSON、XML进行序列化/反序列化。publicclassUser{IntegeruserId;Stringname;IntegergroupId;...}我想在处理xml时忽略groupId,所以我的XML不会包含它:......但是JSON将:{"userId":"...","name":"...","groupId":"..."}我知道@JsonIgnore在两者中都有效,但我只想在xml中忽略它。我知道可用于执行此操作的混合注释(https://stackoverflow.com/a/22906823/2487263),但我认为应该有一个

java - 使用带有 JAVA/RDBMS 堆栈的 JSON 客户端时的规范化与反规范化

我有一个与JAVA/MySQL堆栈接口(interface)的AngularJSJSON客户端。由于MySQL是一个RDBMS,我所有的数据都被规范化了(当然是前三种形式)。我的问题可以用下面的例子来说明。服务器返回了一个Example对象和一个User对象。Example-[{userId:1,........},{userId:2,...},{userId:3,...}];User-[{userId-1,firstName-"John",lastName-"Doe",..},{userId-2,firstName-"Jane",lastName-"Doe",..},{...}...

java - Hibernate 分离查询作为标准查询的一部分

Java专家能否帮我编写分离查询作为以下SQL语句的条件查询的一部分。selectA.*FROMAETABLEAwherenotexists(selectentryidFROMAETABLEBwhereB.classpk=A.classpkandB.userid=A.useridandB.modifiedDate>A.modifiedDate)anduserid=10146 最佳答案 你需要写一个correlatedsubquery.假设属性/类名称与上面的列/表名称匹配:DetachedCriteriasubquery=Detac