Mysql+Apache+PHP实现整合及网页登陆注册功能

Posted drddzh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql+Apache+PHP实现整合及网页登陆注册功能相关的知识,希望对你有一定的参考价值。

前言:为什么写这一篇文章呢?主要还是想让我的小可爱们–20计信管们的小伙伴能够掌握相关基本知识。能够使用这些技术去实现网页登陆注册的功能。同时也方便给初学者做一个讲解吧。因为我看了下网上大部分的教程都缺头少尾!废话不多说,那我们就准备开始吧!!!


众所周知:在windows中要开发一个web网站
那么WAMP模式肯定是一个不错的选择。(WAMP是指在Windows服务器上使用Apache、mysqlphp的集成安装环境,可以快速安装配置Web服务器。)


开发环境(这是我个人采用的对应的版本号)下方也提供了下载地址:

Apache:httpd-2.4.51-o111l-x64-vc15(Apache24)

链接:https://pan.baidu.com/s/1lEO-vdfX_TytX-xeUJu_kA 提取码:kta7

Mysql:mysql-5.7.23-winx64

链接:https://pan.baidu.com/s/1bsKLWYWFD3MP3AQWgV94Cw 提取码:q6o8

PHP:php-5.5.10-Win32-VC11-x64

链接:https://pan.baidu.com/s/14O2IwSW-SaSd05gm3sc-LQ 提取码:prfd


题外话: 其中Apache和PHP一定要选择匹配的版本,首先,apache现在主流的两个版本是2.2和2.4,功能区别就不多说了,主要说下和php的搭配。对于apache2.4可以和php5.5.x以上的版本搭配,在选择php使用时,一定注意所下载的php目录中一定有“php5apache2_4.dll”文件,因为在配置apache的”Apache2.4confhttpd.conf”文件中的LoadModule时用到的就是php5apache2_4.dll文件。


准备工作:我们需要把下载好的文件分别都解压好 并且放到一个没有中文名称的路径下。此时此刻我把三个都放在E:\\work这个目录下。

我给你的建议最好目录和我一样,因为这些之后我们配置一些路径就可以直接复制粘贴。如果不一样也没关系,最多就该路径注意一点点哈!


第一部分:Mysql数据库免安装版简单配置

首先我们来安装Mysql数据库吧。
第一步:我们需要在windows视窗打开cmd命令提示符。一定要点击以管理员身份运行


打开之后我们使用cd命令跳转到我们的mysql的安装目录下的bin目录: 

E:\\work\\mysql-5.7.23-winx64\\bin (这个是我的)

到这个bin目录下之后输入命令:

mysqld --install;

会提示安装成功,Service successfully installed.

然后进入下一步。输入第二串命令:

mysqld --initialize --user=root --console

PS:输入完这个命令之后可能需要稍微等一段时间,因为它此时正在创建data文件夹。
上述步骤完成以后,就可以启动MySQL了。
输入:net start mysql 用来启动mysql服务。稍后你也可以用net stop mysql关闭MySQL服务。
然后就可以进入MySQL了,输入:mysql -u root -p,此时会要求你输入密码。
由于我们是第一次安装 没有密码 所以不需要输入 直接回车就行了。然后我们就能直接进入到mysql数据库啦!
由于没有密码 所以我们需要修改一下密码。输入命令:

update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';

这个命令把我们的密码修改成了123456 当然你可以改成其他的 这个没关系的。输入完命令记得回车执行。

出现这个提示就表示修改成功啦。修改完成之后我们需要刷新一下。所以输入命令:

flush privileges;

同样是输入完成按一下回车。
之后我们退出mysql 输入命令:exit
然后重启一下mysql(重启就是关闭之后再启动)。那就需要stop停止 start启动。

之后我们再次输入:mysql -u root -p,此时会要求你输入密码。密码就是我们刚刚修改的123456.


回车之后就登陆成功了

到这一步 mysql的配置就已经完成了 。恭喜你完成了三分之一.接下来让我们开始第二部分


第二部分:Apache服务器的简单配置

  1. 打开Apache安装目录E:\\work\\Apache24。然后找到conf目录下的httpd.conf 文件。
    打开这个文件之后我们找到 Define SRVROOT这个关键字 将后面的值修改为Apache存放的路径。
    我的在 E:\\work\\Apache24 所以我改成了
    Define SRVROOT "E:\\work\\Apache24"
    你的请你自己判断路径修改。

2. 修改监听端口 默认是80 我们改成8080
找到Listen和ServerName localhost 把他们都改成8080 如下图:


修改完成之后记得保存哦 然后就可以关闭文件了。

记住几个Apache常用命令:
httpd.exe -k install -n Apache2.4 安装服务
sc delete Apache2.4 卸载Apache2.4服务
httpd.exe -k install -n Apache2.4 重新安装
httpd.exe -k start -n Apache2.4 启动服务
httpd.exe -k stop -n Apache2.4 停止服务

然后命令行用管理员身份进入E:\\work\\Apache24\\bin,运行

httpd.exe -k install -n Apache2.4 


安装成功之后就可以启动Apache服务了。运行

httpd.exe -k start -n Apache2.4 

运行之后表示这个Apache服务器已经成功地启动了 此时此刻你可以在你电脑打开一个浏览器 在地址栏输入http://localhost:8080或者是127.0.0.1:8080

如果打开之后有一个页面出现表示这个运行成功了第二部分也就完成了





第三部分:PHP的简单配置

  1. 找到E:\\work\\php-5.5.10-Win32-VC11-x64\\php.ini-development文件将它复制一遍并且重新命名为php.ini然后用编辑工具打开这个php.ini文件之后使用检索工具(Ctrl+F)找到extension_dir = “ext”

  2. 如图修改:这里的分号就是注释的功能,注意去掉分号!

  3. 然后我们去Apache目录下给php加拓展 这样Apache就能识别php了。找到E:\\work\\Apache24\\conf\\httpd.conf这个文件然后也用编辑器打开它。

  4. 划到文件最后面 在最后面添加以下配置代码:

#***********php与Apache整合*****************************
#让apache载入php处理模块
LoadModule php5_module E:/work/php-5.5.10-Win32-VC11-x64/php5apache2_4.dll
#让apache能够识别php头部文件
AddHandler application/x-httpd-php .php
#让apache能够支持 .html .htm 文件
AddType application/x-httpd-php .html .htm
#指定php的ini文件,该文件是对php的一些配置 这个路径就是php存放路径
PHPIniDir "E:\\work\\php-5.5.10-Win32-VC11-x64"

PS:这里我对上面的代码简单解释一下,整个代码的意思是让apache载入php处理模块(LoadModulephp5_module),代码中的路径是根据你安装php的位置不同而改变,比如说我是在E盘的work文件夹中安装的,所以我的路径是:E:\\work\\mysql-5.7.23-winx64(注意这里的斜杆是反斜杆“\\”,在代码中要改成正斜杆“/”)。然后你需要检查在E:/work/php-5.5.10-Win32-VC11-x64/目录下是否有这个文件“php5apache2_4.dll”,理论上应该在,为了以防万一 一定要检查一下,这个文件非常重要,起到了一个桥梁作用。

然后在php.ini文件里、打开几个常用的扩展,例如:查到extension=php_mysqli.dll,去掉前面的分号。打开下图中的这几个库:
PS:修改完成之后记得保存Ctrl +S

然后创建一个phpinfo.php文件:代码如下

<?php
		phpinfo();
?>

把这个文件放到E:\\work\\Apache24\\htdocs目录下
到这里就全部结束掉了 我们的配置就全部完成了。最好我们需要重启一下Apache服务器让我们刚刚的配置生效。
所以我们需要转入到E:\\work\\Apache24\\bin目录下 输入:

httpd.exe -k stop -n Apache2.4  停止服务
httpd.exe -k start -n Apache2.4  启动服务


之后打开浏览器输入 http://localhost:8080/phpinfo.php 能看到以下信息就表示Apache+Mysql+PHP整合成功。

第四大部分 :登陆注册功能的实现。
首先我们要准备以下5个页面。

完整代码:

1.数据库设计

CREATE DATABASE IF NOT EXISTS test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

USE test;

CREATE TABLE USER(id INT(10) NOT NULL AUTO_INCREMENT,username VARCHAR(30),PASSWORD VARCHAR(40),PRIMARY KEY(id)); 

该命令的作用:

  1. 如果test数据库不存在则创建,存在则不创建。并设定编码集为utf8
  2. 使用test数据库
  3. 创建名为user的表 有 id、username、password。

2.signup.html 注册表单

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>用户注册页面</title>
 </head>
 <body>
  <form action="signup.php" method="post">
   <p>用户名:<input type="text" name="name"></p>
   <p>密 码: <input type="text" name="password"></p>
   <p><input type="submit" name="submit" value="注册"></p>
  </form>
 </body>
</html>

3.signup.php 注册程序

<?php
//设置php文件的字符集为utf-8
header("content-type:text/html;charset=utf8"); 

//使用post方式获取表单的用户名字
$uname=$_POST["name"];
//使用post方式获取表单的用户密码
$pswd=$_POST["password"];

// 连接数据库语句 
// 第一个参数是数据库地址 一般是localhost或者是127.0.0.1
// 第二个参数是数据库用户名 一般是root
// 第三个参数是数据库密码 我的是 123456
// 第四个参数是选择使用那个数据库
$db = new MySQLi("localhost","root","123456","test");
//判断连接是否出错 如果出错就提示失败
!mysqli_connect_error() or die("连接失败!!".mysqli_connect_error());
// 判断用户名是否已经存在
$sql_exist="select * from user where username='$uname'"; 
// 执行SQL语句
$count = $db-> query($sql_exist);
$v = $count->fetch_row();  
//如果查询到的数据大于1就是已经有存在的用户名字了
if($v>=1)

echo "<h1>用户名已经存在</h1>";
else 
    //否则没有的话就表示没有 我们就执行插入数据语句
$sql = "insert into user (username,password) values ('$uname','$pswd');";
    // 执行SQL语句
    $result = $db-> query($sql);
    //如果影响大于1行就表示成功
    if($result)  
      
       echo"<h1>注册成功!!/h1>";  
       //3秒后自动跳转到登陆页面!<
       //header('Refresh:3,Url=/login.html');   //3s后跳转
      
    else  //否则就失败了
      
    echo"<h1>很抱歉,注册失败!!</h1>";  
      
 

 
?>
  1. login.html 登录表单
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>登陆</title>
 </head>
 <body>
  <form name="login" action="login.php" method="post">
    <p>用户名<input type=text name="name"></p>
    <p>密 码<input type=password name="password"></p>
    <p><input type="submit" name="submit" value="登录"></p>
   </form>
 </body>
</html>

5 .login.php 登录程序

<?php
//设置php文件的字符集为utf-8
header("content-type:text/html;charset=utf8"); 
//开启session
session_start();
//使用post方式获取表单的用户名字
$username = $_POST['name']?$_POST['name']:'';
//使用post方式获取表单的用户密码
$password = $_POST['password']?$_POST['password']:'';
// 连接数据库语句 
// 第一个参数是数据库地址 一般是localhost或者是127.0.0.1
// 第二个参数是数据库用户名 一般是root
// 第三个参数是数据库密码 我的是 123456
// 第四个参数是选择使用那个数据库
$db = mysqli_connect('localhost', 'root', '123456', 'test');
//设置指定的查询字符集
mysqli_set_charset($db,'utf8');
//SQL语句  主要是查询账号密码是否一致正确
$sql = "select password from user where username='".$username."'";
// 执行SQL语句
$res = mysqli_query($db,$sql);
//寻黄遍历整个结果
$result = mysqli_fetch_assoc($res);


//关闭当前连接
mysqli_close($db);

if($result['password'] == $password)
    //如果都匹配就判定登录成功 
    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;//一般情况下session中不保存密码信息
    //跳转到index.php下 欢迎
    header("Location: index.php");

else
    echo"您输入的用户名或密码不正确,请重新输入!!";  
   // header("Location: dl.html");//密码错误跳回登陆网页


?>

6 .index.php 登陆首页

<?php
//设置php文件的字符集为utf-8
header("content-type:text/html;charset=utf8"); 
echo "<h1>欢迎回来</h1>";
?>

然后我们把这些页面放到E:\\work\\Apache24\\htdocs目录下
然后打开浏览器。 输入:http://localhost:8080/。就能看到下图结果

然后我们选择 signup.html文件
路径就变成了http://localhost:8080/signup.html 或者我们可以直接输入这个地址也能打开signup.html文件。

然后打开Mysql服务 就可以登陆了
至此一个简单的完整的注册登录系统完成,代码很简单没有考虑验证安全性健壮性,之后在进行完善。





PS:后续踩坑。
其实免安装版本对于初学者来说是不太友好地 因为有一些地方配置错误会导致很多地址都会错误。配置错误就不细说了 请自行百度解决。

接下来是分析注册页面连接数据库无效。可以看到我们执行连接脚本告诉我们mysql_connect()方法是未定义的。

首先,PHP要想处理Mysql,我们知道在PHP方面要做的是:

启用mysql功能,在php.ini中打开这两个拓展
extension=php_mysql.dll
extension=php_mysqli.dll

开启后请重启 Apache服务,再测试。如果还是不行

那就说明在Apache加载Httpd.conf 的过程中没有加载成功php.ini 中的这2句话

不信去看,phpinfo( )这个文件的输出

搜索一下Mysql字眼,除了mysqlld 的项目,根本找不到 mysql 和 mysqli 这两个配置

可以看到全文就一个mysqli 关键字 并且他还不是拓展。

原因有两方面:

1,php.ini 中 extension_dir 没有配置好

2,php.ini 没有正常加载

解决第一个问题只需要如下图操作:
打开php.ini文件 看看extension_dir路径是不是对的。

解决第二个问题只需要如下图操作:

确保在 httpd.conf 中LoadModule php5_module 和PHPIniDir 路径是对的
可以看到我的PHPIniDir 是错误的 我写到mysql文件下去了 这个应该是php安装目录
修改成下图路径就可以了
然后重启Apache服务 解决。!!!
这篇文章写了大半天 主要是踩坑难受 。
希望能对初学者有点帮助 如果文章哪里有错误可以指出来 一起矫正!




                                                                       帅气的阿豪

以上是关于Mysql+Apache+PHP实现整合及网页登陆注册功能的主要内容,如果未能解决你的问题,请参考以下文章

php mysql apache 集成环境都有哪些

LAMP平台部署及应用

PHP+apache+mysql+phpmyadmin安装配置整合

apache+mysql+php,安装整合配置。

LAMP_03_Win下Apache+PHP+MySQL整合

LAMP和LNMP的实现原理图