PHP+Mysql-表单数据插入数据库及数据提取完整过程

网站在进行新用户注册时,都会将用户的注册信息存入数据库中,需要的时候再进行提取。今天写了一个简单的实例。

主要完成以下几点功能:

(1)用户进行注册,实现密码重复确认,验证码校对功能。

(2)注册成功后,将用户进行插入数据库中进行保存。

(3)将数据库表中数据进行提取,并打印。

1.注册表单

在以前的几篇博客中,分享过注册及登录表单的代码。这次的代码,大致相同,只是略有变化。仅作为实例探讨

<html>
    <head>
        <title>注册页面</title>
        <meta content-type:"text/html" charset="utf-8">
    </head>

    <body>
        <h1>新用户注册</h1>
        <hr>

        <form method="post" action="regsubmit.php">
            <table>
                <tr>
                    <td>请输入用户名:<input type="text" name="username"></td>
                </tr>

                <tr>
                    <td>请输入密码:    <input type="password" name="password"></td>
                </tr>

                <tr>
                    <td>请确认密码:    <input type="password" name="repassword"></td>
                </tr>

                <tr>
                    <td>请输入验证码:<input type="text" name="vcode"><img src="regauth.php"></td>
                </tr>

                <tr>
                    <td><input type="submit" value="注册">    <input type="reset" value="重置"></td>

                </tr>
            </table>
        </form>
    </body>
</html>

表单页面实在没什么可讲的,除了格式对齐上加几个&nbsp(空格)。

效果图:

2.验证码页面

<strong><span style="font-family:KaiTi_GB2312;font-size:18px;"><?php
    header("content-type:text/html charset=utf-8");

    //开启session
    session_start();

    //准备画布
    $im=imagecreatetruecolor(50,25);

    //准备颜料
    $black=imagecolorallocate($im,0,0,0);
    $gray=imagecolorallocate($im,200,200,200);

    //背景填充
    imagefill($im,0,0,$gray);

    //文字居中
    $x=(50-10*4)/2;
    $y=(25-5)/2+5;

    //添加干扰素
    for($i=0;$i<50;$i++){
        imagesetpixel($im,mt_rand(0,50),mt_rand(0,25),$black);
    }

    //准备文字
    $arr=array_merge(range(0,9),range(‘a‘,‘z‘),range(‘A‘,‘Z‘));
    shuffle($arr);
    $str=implode(array_slice($arr,0,4));

    //把$str放入session中,方便所有页面中调用
    $_SESSION[‘vstr‘]=$str;

    $file="../fonts/simsun.ttc";
    imagettftext($im,15,0,$x,$y,$black,$file,$str);

    //输出到浏览器上或保存起来
    header("content-type:image/png");
    imagepng($im);

    //关闭画布
    imagedestory($im);
?></span></strong>

对于验证码功能,在以前的一篇博客中,曾进行详细的讲解过。这次代码也基本直接拿过来用了,唯一升级了一点就是添加了干扰素,使得验证码没有干巴巴的四个字符在哪里。用到了imagesetpixel()函数,用于制造一些干扰点。具体使用方法请查看php手册。

3.提交页面(数据提取页面)

<?php
    header("content-type:text/html;charset=utf-8");

    //开启session
    session_start();

    //将验证码与输入框中字符串都转为小写
    $code=strtolower($_POST[‘vcode‘]);
    $str=strtolower($_SESSION[‘vstr‘]); 

    //接收表单传递的用户名和密码
    $name=$_POST[‘username‘];
    $pwd=$_POST[‘password‘];
    $repwd=$_POST[‘repassword‘];

    //判断密码是否一致
    if($pwd!=$repwd){
        echo"<script>alert(‘两次密码输入不一致,请重新输入‘);</script>";
        echo"<script>location=‘regform.html‘</script>";
    }else{
        //判断验证码是否正确
        if($code!=$str){
            echo "<script>alert(‘验证码输入错误,请重新输入‘);</script>";
            echo"<script>location=‘regform.html‘</script>";
        }else{
            //通过php连接到mysql数据库
            $conn=mysql_connect("localhost","","");

            //选择数据库
            mysql_select_db("test");

            //设置客户端和连接字符集
            mysql_query("set names utf8");

            //通过php进行insert操作
            $sqlinsert="insert into t1(username,password) values(‘{$name}‘,‘{$pwd}‘)";

            //通过php进行select操作
            $sqlselect="select * from t1 order by id";

            //添加用户信息到数据库
            mysql_query($sqlinsert);

            //返回用户信息字符集
            $result=mysql_query($sqlselect);

            echo "<h1>USER INFORMATION</h1>";
            echo "<hr>";
            echo "<table width=‘700px‘ border=‘1px‘>";
            //从结果中拿出一行
            echo "<tr>";
            echo "<th>ID</th><th>USERNAME</th><th>PASSWORD</th>";
            echo "</tr>";
            while($row=mysql_fetch_assoc($result)){
                echo "<tr>";
                //打印出$row这一行

                echo "<td>{$row[‘id‘]}</td><td>{$row[‘username‘]}</td><td>{$row[‘password‘]}</td>";

                echo "</tr>";
            }
            echo "</table>";

            //释放连接资源
            mysql_close($conn);

            }
    }
?>

这个页面的主要作用完成了最重要的几个功能。将表单提交的数据都存入变量,然后进行密码和验证码的判断,都正确以后,将用户信息存入数据库并将数据库存放用户信息的表中所有数据提取打印出来。说白了,后半句就是数据存入和提取。代码中注释写的相当的清楚了,基本每个用处都涉及到了。但还是有些容易疏忽的点要指出来:<1>连接数据库的函数mysql_connect("localhost","username","password")。其中的用户名和密码,依据大家自己的配置进行编写,我的数据库懒得加密所以就都为空了。

<2>数据插入数据库时

values(‘‘,‘‘)一定要加单引号(外层加了双引号,里面只能用单引号),因为本身数据就是字符串,不能直接写个变量就完事了。如果不加单引号,$name和$pwd变量解析以后变成几个字符,不在引号内,谁认识谁呀。必然会报错。

<3>打印提取数据时,用到了while循环。里面的mysql_fetch_assoc()函数提取后返回的数组,下标就是数据所属字段名。相似功能的函数还有mysql_fetch_array(),mysql_fetch_row(),mysql_fetch_field()。具体使用请看需求,一般来说mysql_fetch_assoc()比较的常用。

效果图:

时间: 2024-08-01 13:22:34

PHP+Mysql-表单数据插入数据库及数据提取完整过程的相关文章

PHP+Mysql————表单数据插入数据库及数据提取

站点在进行新用户注冊时,都会将用户的注冊信息存入数据库中,须要的时候再进行提取.今天写了一个简单的实例. 主要完毕下面几点功能: (1)用户进行注冊,实现password反复确认,验证码校对功能. (2)注冊成功后,将用户进行插入数据库中进行保存. (3)将数据库表中数据进行提取,并打印. 1.注冊表单 在曾经的几篇博客中,分享过注冊及登录表单的代码.这次的代码,大致同样,仅仅是略有变化.仅作为实例探讨 表单页面实在没什么可讲的,除了格式对齐上加几个&nbsp(空格). <html>

PHP实例————表单数据插入数据库及数据提取

网站在进行新用户注册时,都会将用户的注册信息存入数据库中,需要的时候再进行提取.今天写了一个简单的实例. 主要完成以下几点功能: (1)用户进行注册,实现密码重复确认,验证码校对功能. (2)注册成功后,将用户进行插入数据库中进行保存. (3)将数据库表中数据进行提取,并打印. 1.注册表单 在以前的几篇博客中,分享过注册及登录表单的代码.这次的代码,大致相同,只是略有变化.仅作为实例探讨 <html> <head> <title>注册页面</title>

PHP实例 表单数据插入数据库及数据提取 用户注册验证

网站在进行新用户注册时,都会将用户的注册信息存入数据库中,需要的时候再进行提取.今天写了一个简单的实例. 主要完成以下几点功能: (1)用户进行注册,实现密码重复确认,验证码校对功能. (2)注册成功后,将用户进行插入数据库中进行保存. (3)将数据库表中数据进行提取,并打印. 1.注册表单 在以前的几篇博客中,分享过注册及登录表单的代码.这次的代码,大致相同,只是略有变化.仅作为实例探讨 <html> <head> <title>注册页面</title>

mysql命令行批量插入100条数据命令

先介绍一个关键字的使用: delimiter 定好结束符为"$$",(定义的时候需要加上一个空格) 然后最后又定义为";", MYSQL的默认结束符为";" 如何通过mysql命令行批量插入100条数据呢,可以在代码里实现,也可以通过命令行,也就是通过存储过程: delimiter $$create procedure myproc ()begindeclare num int ;set num = 1 ;while num < 100 d

解决在mysql表中删除自增id数据后,再添加数据时,id不会自增1的问题

https://blog.csdn.net/shaojunbo24/article/details/50036859 问题:mysql表中删除自增id数据后,再添加数据时,id不会紧接.比如:自增id 1 2 3 4 现在删除4,就变成了 1 2 3 这时候,如果增加一条数据,会变成 1 2 3 5 上面5不是我们想要的结果,4才是理想的id,解决方法是,在删除4之后,执行下面的sql语句: ALTER TABLE table_name AUTO_INCREMENT = 1; 原文地址:http

关于Mysql表InnoDB下插入速度慢的解决方案

最近做了 server_log 日志数据库记录,仅仅插入,由平台来获取数据进行分析的需求. 但是内部反馈插入数据库记录非常耗时,我就很纳闷了,一个insert怎么会 30-50ms 呢?按说应该在 0.5ms 以内的: 经过分析,发现是InnoDB数据库的Row_Format格式问题,改为MyISAM表就可以了,但是InnoDB是支持事务的,一般是推荐InnoDB的,好奇为什么. 而且InnoDB的表,只能选择 COMPACT 和REDUNDANT 两种行格式(RoW_FORMAT). 经过搜索

Java中上传文件和表单数据提交如何保持数据的一致性?

学生申请学科竞赛活动,表单中有学科竞赛的申报信息和部分附件,需要做到将上传文件和表单数据提交保持一致性. 将上传文件和插入表单数据放到事务汇总去处理,由于表单的数据我们可以控制,但是上传的文档不好控制.一方面我就把表单数据提交放置在文件上传前面,这样当表单数据提交发生异常我们可以回滚,文件并未上传,当文件上传发生异常时,我们可以回滚数据库的数据,只有当文件正常上传时我们才提交数据库数据... ----------------------------------------------------

SQL向一个表中批量插入&amp;&amp;删除大量数据

插入: 1. 数据从另一个表中获取 (1)两表结构不一样insert into tb1 需要的列名 select 按照前面写上需要的列名 from tb2(2)两表结构一样insert into tb1 * select * from tb2 2. 数据直接输入 (1) INSERT INTO MyTable(ID,NAME) VALUES(1,'123');INSERT INTO MyTable(ID,NAME) VALUES(2,'456');INSERT INTO MyTable(ID,N

Oracle学习笔记_05_ 一个创建表空间、创建用户、授权的完整过程

一.完整命令 su - oracle sqlplus /nolog conn /as sysdba create tablespace scaninvoice logging datafile '/u01/app/oracle/oradata/mas/scaninvoice.dbf' size 200M autoextend on next 100m extent management local; create temporary tablespace scaninvoice_tmp temp