php 用户注册并且设置为己登录状态实现方法

 更新时间:2016年11月25日 16:37  点击:2176

php教程 用户注册并且设置为己登录状态实现方法,下面实例讲述了如何把表单提交的数据保存到mysql教程数据库教程,而没有实现用户注册后自动登录的功能,而实例二就实现了这种做法。

<html>
<body>
<?php

$self = $_SERVER['PHP_SELF'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$username = $_POST['username'];
$password = $_POST['password'];

if( (!$firstname) or (!$lastname) or (!$username) or (!$password) )
{
  $form ="Please enter all new user details...";
  $form.="<form action="$self"";
  $form.=" method="post">First Name: ";
  $form.="<input type="text" name="firstname"";
  $form.=" value="$firstname"><br>Last Name: ";
  $form.="<input type="text" name="lastname"";
  $form.=" value="$lastname"><br>User Name: ";
  $form.="<input type="text" name="username"";
  $form.=" value="$username"><br>Password: &nbsp; ";
  $form.="<input type="text" name="password"";
  $form.=" value="$password"><br>";
  $form.="<input type="submit" value="Submit">";
  $form.="</form>";
  echo($form);
}
else
{
  $conn = @mysql_connect("localhost","root", "") or die("Could not connect to MySQL");
  $db = @mysql_select_db("my_database",$conn) or die("Could not select database");
  $sql = "insert into users (first_name,last_name,user_name,password)values ("$firstname","$lastname","$username",password("$password") )";
  $result = @mysql_query($sql,$conn)or die("Could not execute query");
  if($result){
    echo("New user $username added");
  }
}
?>
</body></html>


下面个实例更详细,用户注册后并且设置用户的为登录状态,本实现利用了setcookie来保存用户登录信息

create table user_info (
user_id char(18),
fname char(15),
email char(35));


//File: index.php

<?
$form = "
<form action="index.php" method="post">
<input type="hidden" name="seenform" value="y">
Your first name?:<br>
<input type="text" name="fname" value=""><br>
Your email?:<br>
<input type="text" name="email" value=""><br>
<input type="submit" value="Register!">
</form>
";
if ((! isset ($seenform)) && (! isset ($userid))) :
     print $form;
elseif (isset ($seenform) && (! isset ($userid))) :
     $uniq_id = uniqid(rand());
     @mysql_pconnect("localhost", "root", "") or die("Could not connect to MySQL server!");
     @mysql_select_db("user") or die("Could not select user database!");
     $query = "INSERT INTO user_info VALUES('$uniq_id', '$fname', '$email')";
     $result = mysql_query($query) or die("Could not insert user information!");
     setcookie ("userid", $uniq_id, time()+2592000);

     print "Congratulations $fname! You are now registered!.";
elseif (isset($userid)) :
     @mysql_pconnect("localhost", "root", "") or die("Could not connect to MySQL server!");
     @mysql_select_db("user") or die("Could not select user database!");
     $query = "SELECT * FROM user_info WHERE user_id = '$userid'";
     $result = mysql_query($query) or die("Could not extract user information!");

     $row = mysql_fetch_array($result);
     print "Hi ".$row["fname"].",<br>";
     print "Your email address is ".$row["email"];

endif;

?>

php教程 列出MySQL数据库教程中所有表二种方法

PHP代码如下:

function list_tables($database)
{
    $rs = mysql教程_list_tables($database);
    $tables = array();
    while ($row = mysql_fetch_row($rs)) {
        $tables[] = $row[0];
    }
    mysql_free_result($rs);
    return $tables;
}

但由于mysql_list_tables方法已经过时,运行以上程序时会给出方法过时的提示信息,如下:

Deprecated: Function mysql_list_tables() is deprecated in … on line xxx
 

一个处理办法是在php.ini中设置error_reporting,不显示方法过时提示信息

1 error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

另一个方法是使用PHP官方推荐的替代做法:

 

function list_tables($database)
{
    $rs = mysql_query("SHOW TABLES FROM $database");
    $tables = array();
    while ($row = mysql_fetch_row($rs)) {
        $tables[] = $row[0];
    }
    mysql_free_result($rs);
    return $tables; 
出现乱码常见是直接连接mysql数据库教程而没设置连接查询的编码了,一般常用的是mysql_query("set names 'gb2312'")这样大多是可以解决的,下面来看一个上面方法解决不了处理方法。
 代码如下 复制代码

  $link = mysql_connect('localhost','root','');

  mysql_query("set character_set_connetion=utf8,character_set_result=utf8, character_set_client=binary",$link);

 

分享一下 我所用的方法。只对php教程myadmin导出的sql文件有效

$dbfile="test.sql";
 $content=iconv("utf-8","gb2312",file_get_contents($dbfile));
 //获取创建的数据
 //去掉注释
 $content=preg_replace("/--.*n/iu","",$content);
 //替换前缀
 $content=str_replace("ct_",table_pre,$content);

$carr=array();
 $iarr=array();
 //提取create
 preg_match_all("/create table .*(.*).*;/ius",$content,$carr);
 $carr=$carr[0];
 foreach($carr as $c)
 {
  @mysql教程_query($c,$link);
 }
 
 //提取insert
 preg_match_all("/insert into .*(.*);/ius",$content,$iarr);
 $iarr=$iarr[0];
 //插入数据
 foreach($iarr as $c)
 {
  @mysql_query($c,$link);
 }

 

1.pdo简介
pdo(php教程 data object) 是php 5 中加入的东西,是php 5新加入的一个重大功能,因为在php 5以前的php4/php3都是一堆的数据库教程扩展来跟各个数据库的连接和处理,什么 php_mysql教程.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等。
php6中也将默认使用pdo的方式连接,mysql扩展将被作为辅助
2.pdo配置
php.ini中,去掉"extension=php_pdo.dll"前面的";"号,若要连接数据库,还需要去掉与pdo相关的数据库扩展前面的";"号,然后重启apache服务器即可。
extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pdo_mssql.dll
extension=php_pdo_odbc.dll
extension=php_pdo_firebird.dll
......
3.pdo连接mysql数据库
new pdo("mysql:host=localhost;dbname=db_demo","root","");
默认不是长连接,若要使用数据库长连接,需要在最后加如下参数:
new pdo("mysql:host=localhost;dbname=db_demo","root","","array(pdo::attr_persistent => true) ");
4.pdo常用方法及其应用
pdo::query() 主要是用于有记录结果返回的操作,特别是select操作
pdo::exec() 主要是针对没有结果集合返回的操作,如insert、update等操作
pdo::lastinsertid() 返回上次插入操作,主键列类型是自增的最后的自增id
pdostatement::fetch() 是用来获取一条记录
pdostatement::fetchall() 是获取所有记录集到一个中
5.pdo操作mysql数据库实例


复制代码 代码如下:

<?php
$pdo = new pdo("mysql:host=localhost;dbname=db_demo","root","");
if($pdo -> exec("insert into db_demo(name,content) values('title','content')")){
echo "插入成功!";
echo $pdo -> lastinsertid();
}
?>


 

复制代码 代码如下:

<?php
$pdo = new pdo("mysql:host=localhost;dbname=db_demo","root","");
$rs = $pdo -> query("select * from test");
while($row = $rs -> fetch()){
print_r($row);
}
?>

 

网上最常出现的解决中文乱码显示的代码是:

第一种:pdo::__construct($dsn, $user, $pass, array

(pdo::mysql_attr_init_command => "set names'utf8';"));

我试过用第一种方法,可结果是,name字段只显示一个‘c'字符。之后的本该显示中文的地方却是空白。

结果是这样的:如图1示

我是只要解决的:直接将utf8替换成了gbk,就可以了,即:

pdo::__construct($dsn, $user, $pass, array(pdo::mysql_attr_init_command => "set

names'gbk';"));

效果图2如下:


第二种:pdo::__construct($dsn, $user, $pass);

pdo::exec("set names 'utf8';");

第二种我也在我的环境里测试过,显示效果如图1所示,碰到这种情况,把utf8替换成gbk,就能显

示了。另外,这里的pdo::在使用的时候用$pdo->代替,当然,这个是个变量,变量名称可以自己定义。

第三种

:$pdo->query('set names utf8;');

至于第三种呢,看了上面两种,应该也知道要吧utf8替换成gbk,也能正确显示了。

这几种我都测试过了。都行。哈哈。另外,我在这里还介绍一种解决中文乱码的一种方法,不过大同小异,

基本和第三种没什么却别,不通的是,这种方法,没用query而是用exec,代码如下:

$pdo->exec("set character set gbk");

<?php
/*

常用数据库操作,如:增删改查,获取单条记录、多条记录,返回最新一条插入记录id,返回操作记录行数等
*/
/*
参数说明
int $debug 是否开启调试,开启则输出sql语句
int $getcount 是否记数,返回值为行数
int $getrow 是否返回值单条记录
string $table 数据库表
string $fields 需要查询的数据库字段,允许为空,默认为查找全部
string $sqlwhere 查询条件,允许为空
string $orderby 排序,允许为空,默认为id倒序
*/

function hrselect($debug, $getcount, $getrow, $table, $fields="*", $sqlwhere="", $orderby="id desc"){
global $pdo;
if($debug){
if($getcount){
echo "select count(*) from $table where 1=1 $sqlwhere order by $orderby";
}else{
echo "select $fields from $table where 1=1 $sqlwhere order by $orderby";
}
exit;
}else{
if($getcount){
$rs = $pdo->query("select count(*) from $table where 1=1 $sqlwhere order by $orderby");
return $rs->fetchcolumn();
}elseif($getrow){
$rs = $pdo->query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
return $rs->fetch();
}else{
$rs = $pdo->query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
return $rs->fetchall();
}
}
}
/*
参数说明
int $debug 是否开启调试,开启则输出sql语句
int $execrow 是否开启返回执行条目数
int $lastinsertid 是否开启返回最后一条插入记录id
string $table 数据库表
string $fields 需要插入数据库的字段
string $values 需要插入数据库的信息,必须与$fields一一对应
*/
function hrinsert($debug, $execrow, $lastinsertid, $table, $fields, $values){
global $pdo;
if($debug){
echo "insert into $table ($fields) values ($values)";
exit;
}elseif($execrow){
return $pdo->exec("insert into $table ($fields) values ($values)");
}elseif($lastinsertid){
return $pdo->lastinsertid("insert into $table ($fields) values ($values)");
}else{
$pdo->query("insert into $table ($fields) values ($values)");
}
}
/*
参数说明
int $debug 是否开启调试,开启则输出sql语句
int $execrow 是否开启执行并返回条目数
string $table 数据库表
string $set 需要更新的字段及内容,格式:a='abc',b=2,c='2010-10-10 10:10:10'
string $sqlwhere 修改条件,允许为空
*/
function hrupdate($debug, $execrow, $table, $set, $sqlwhere=""){
global $pdo;
if($debug){
echo "update $table set $set where 1=1 $sqlwhere";
exit;
}elseif($execrow){
return $pdo->exec("update $table set $set where 1=1 $sqlwhere");
}else{
$pdo->query("update $table set $set where 1=1 $sqlwhere");
}
}
/*
参数说明
int $debug 是否开启调试,开启则输出sql语句
int $execrow 是否开启返回执行条目数
string $table 数据库表
string $sqlwhere 删除条件,允许为空
*/
function hrdelete($debug, $execrow, $table, $sqlwhere=""){
global $pdo;
if($debug){
echo "delete from $table where 1=1 $sqlwhere";
exit;
}elseif($execrow){
return $pdo->exec("delete from $table where 1=1 $sqlwhere");
}else{
$pdo->query("delete from $table where 1=1 $sqlwhere");
}
}
?>
[!--infotagslink--]

相关文章

  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • EXCEL数据上传到SQL SERVER中的简单实现方法

    EXCEL数据上传到SQL SERVER中的方法需要注意到三点!注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.做法: 在ASP.NET环境中,添加一个FileUpload上传控件后台代码的E.X: 复制代码 代码如下: if...2013-09-23
  • php根据用户语言跳转相应网页

    当来访者浏览器语言是中文就进入中文版面,国外的用户默认浏览器不是中文的就跳转英文页面。 <&#63;php $lan = substr(&#8194;$HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' c...2015-11-08
  • php有效防止同一用户多次登录

    【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢? 【解决方案】 (1) 每次登录,身份认证成功后,重新产生一个session_id。 s...2015-11-24
  • js检测用户输入密码强度

    一个用Javascript检测用户输入密码强度的效果代码,以下代码主要是从以下四个方面检测用户输入的密码的强度的,有兴趣的朋友可以自己添加或修改成自己想要的形式! 1. 如果输入的密码位数少于5位,那么就判定为弱。 2. 如果...2015-10-23
  • php ajax注册验证用户名是否存在代码

    这是注册程序是一款当用户输入完用户名是,就会自动去数据库中查询用户要注册的用户名是否己经被注册了,如果是返回提示否则提示可以注册。 conn.php文件 代...2016-11-25
  • PHP翻页跳转功能实现方法

    我们都知道用php+mysql在web 页实现数据库资料全部显示是非常简单而有趣的,数据库资料很少的情况下页面显示还是让人满意的,但是当数据库资料非常多的情况下,页面的显示情况将会变的非常糟糕,下面就来介绍一下如何实现当...2015-11-08
  • 网页自动调用国内双核浏览器的极速模式的实现方法

    由于国内好几个浏览器都是双核浏览器(蛋痛,做一个浏览器壳就说国产,而且使用率高),有时打开网页会出现不兼容模式,在极速模式下是好的,现在我们来用代码实现网页自动调用国内...2016-09-20
  • 微信小程序用户授权最佳实践指南

    这篇文章主要给大家介绍了关于微信小程序用户授权最佳实践的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-08
  • 简单php cookie用户登录实例

    cookie 的用途之一是存储用户在特定网站上的密码和 id。另外,也用于存储起始页的首选项。在提供个人化查看的网站上,将要求阁下的网络浏览器利用阁下计算机硬驱上的少量...2016-11-25
  • MySQL验证用户权限的方法

    知识归纳因为MySQL是使用User和Host两个字段来确定用户身份的,这样就带来一个问题,就是一个客户端到底属于哪个host。 如果一个客户端同时匹配几个Host,对用户的确定将按照下面的优先级来排 基本观点越精确的匹配越优先...2015-11-08
  • sqlserver添加sa用户和密码的实现

    这篇文章主要介绍了sqlserver添加sa用户和密码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-07
  • 超详细的php用户注册页面填写信息完整实例(附源码)

    注册页面是大多数网站必备的页面,所以很有必要对自己的注册页面做些精心的设计。下面三张图,第一张是注册的展示页面,第二张思维导图就一个简单的逻辑,第三张是通过firebug查看调用的JS文件。 一、给每个输入框写下说明在...2015-11-24
  • mysql误删root用户恢复方法

    装完数据库清理一些默认账号的时候不小心把root删除了,flush privileges 之后的新 root 忘了grant任何权限,查看mysqld选项里面有个 &#8722;&#8722;skip-grant-tables复制代码 代码如下: #/usr/libexec/mysqld --verbos...2015-03-15
  • Win2012服务器 远程桌面帐户允许多用户同时登录的配置方法

    这篇文章主要介绍了Win2012服务器 远程桌面帐户允许多用户同时登录的配置方法,需要的朋友可以参考下...2016-11-01
  • PHP中对汉字进行unicode编码和解码的实现方法

    小编推荐的这篇文章介绍了PHP中对汉字进行unicode编码和解码的实现方法,非常实用,有兴趣的同学可以参考一下。 代码如下复制代码 //将内容进行UNICODE编码fu...2017-07-06
  • 如何有效提高网站的用户回头率

    第一,网站的内容;请各位站长朋友不要一天到晚只想着出什么好的绝招来推广网站,却忽略了网站的内容;其实网站的内容是极为重要的,因为这是你的本,你的根!网站的内容只有不断...2017-07-06