其实也不是真的从零开始,在此之前我还是一边研究博学(博客美化)一边学的CSS、HTML、JavaScript的,相关内容可以戳这里

看本文之前你最好稍微熟悉一下HTML、JavaScript什么的。

从一个小白做起,目标是搭一个网站!(flag在此。

2017.9.28

  (其实是一周前开始搞的,现在才开始写

  学习php,首先我们要有本地的php环境。

  作为一个偷懒选手我是直接用XAMPP,这个的下载安装教程网上有很多,我当时是在这里看的。

  记得开IIS,还要改改端口什么的(我把Apache的端口改成了82,下面代码会出现)。

  然后请开始在网上(随便)找个php教程看看。各种语法好像其实和JavaScript,c++什么的差不多。

  (其实以上两步你随便什么顺序都可以)

  开工吧。

  先熟悉一下SQL的使用。

  我遇到的第一个问题是php教程跟我说的mysql_connect好像用不了。。。哦,折腾了很久以后发现我的版本比较高,应该用mysqli_connect。

  先把注册系统搞进来。

  下面这个是注册界面:

<!DOCTYPE HTML>
<html>
<body>
<form action="recive.php" method="post">
姓名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
邮箱:<input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

  然后是接收:

<?php
    define('DB_HOST', 'localhost');
    define('DB_USER', 'root');
    define('DB_PASSWORD', '');
    define('DB_NAME','enceladus') ;

    $conn=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
    mysqli_query($conn,"set names 'utf8'");
    if(mysqli_connect_errno()){
        echo mysqli_connect_error();
    }

    $user_name=mysqli_real_escape_string($conn,trim($_POST['username']));
    $user_email=mysqli_real_escape_string($conn,trim($_POST['email']));
    $user_password=mysqli_real_escape_string($conn,trim($_POST['password']));

    $user_email=$_POST['email'];
    $query = "SELECT * FROM Users WHERE email='$user_email' ";
    $data = mysqli_query($conn,$query);

    if (mysqli_num_rows($data)!=0){
        echo "<h2>Email exist!</h2>";
    }else{
        $sql = "INSERT INTO Users(username,password,email) VALUES ('"
        .$user_name."','".$user_password."','".$user_email."')";

        if ($conn->query($sql) === TRUE) {
            echo "Register Successfully!<br>";
        }else{
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
    }

    mysqli_close($conn);
?>

  还在开发过程中所以暂时没管密码加密什么的(其实是出了问题偷懒不搞

  然后做login的时候不知道出了什么岔子,session.save_path一直是一个奇怪的地址(跟php.ini的不同),于是只能强行在页面前加个session_save_path('D:\swm_sxt\XAMPP\tmp');,先这样了,以后再处理。

  然后搞着搞着。login做好了:

<?php
session_save_path('D:\swm_sxt\XAMPP\tmp');
session_start();
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME','enceladus') ;
if(!isset($_SESSION['user_id'])){
    if(isset($_POST['submit'])){
        $conn=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
        $user_email=mysqli_real_escape_string($conn,trim($_POST['useremail']));
        $user_password=mysqli_real_escape_string($conn,trim($_POST['password']));

        if(!empty($user_email)&&!empty($user_password)){
            $query="SELECT user_id, username FROM Users WHERE email='$user_email' AND password='$user_password'";
            $data=mysqli_query($conn,$query);
            echo $user_password;
            if(mysqli_num_rows($data)==1){
                $row=mysqli_fetch_array($data);
                $_SESSION['user_id']=$row['user_id'];
                $_SESSION['username']=$row['username'];
                $home_url='index.php';
                header('Location:'.$home_url);
            }else{
                echo 'Sorry, you must enter a valid username and password to log in.';
            }
        }else{
            echo 'Sorry, you must enter a valid username and password to log in.';
        }
    }
}else{
    $home_url='index.php';
    header('Location:'.$home_url);
}
?>
<html>
    <head>
        <title>Log In</title>
    </head>
    <body>
        <?php
        if(!isset($_SESSION['user_id'])){
        ?>
        <form method = "post" action="<?php echo $_SERVER['PHP_SELF'];?>">
            <fieldset>
                <legend>Log In</legend>

                <label for="useremail">Useremail:</label>
                <input type="text" id="useremail" name="useremail"
                value="<?php if(!empty($user_useremail)) echo $user_useremail; ?>" />

                <br/>

                <label for="password">Password:</label>
                <input type="password" id="password" name="password"/>

            </fieldset>
            <input type="submit" value="Log In" name="submit"/>
        </form>
        <?php
        }
        ?>
    </body>
</html>

  暂时就搞到这里了。赶紧去上晚自习了。

2017.11.30

  好久没更了过来更下(虽然好像没人看

  之前搞了一个多月的botzone,进度拖慢了不少,终究还是有条不紊地进行中。现在已经完成了题库啦,公告啦,排行榜啦之类基本的东西。嘛,丑得不行。

  

  各方面没遇到什么技术问题,反正就是搬砖嘛……值得一提的是我采用了Semantic的ui框架,初学者强行搞ui还是有一定难度的,拿个现成的比较好。

  但是现在就很纠结了,到底要像其他网站一样搞个顶部菜单呢还是把博客园的手制菜单移过来呢……

  (这是hover时的效果。

  干活干活

持续更新:从零开始的php学习生活的更多相关文章

  1. 【持续更新】D3 的学习资料

    经常有朋友问哪里有关于 D3 的比较好的学习资料,现整理成此文.以后找到更多更好的,会不断更新本文. 我是在2013年开始接触 D3 的,当时就觉得这个工具很好玩.至今,学习资料整理了不少.如果有朋友 ...

  2. 值得学习的C/C++开源项目 持续更新

    值得学习的C语言开源项目 持续更新 文章目录 值得学习的C语言开源项目 持续更新 - 1. Webbench - 2. Tinyhttpd - 3. cJSON - 4. CMockery - 5. ...

  3. 关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 【持续更新】

    最近一直用ASP.NET MVC 4.0 +LINQ TO SQL来开发设计公司内部多个业务系统网站,在这其中发现了一些问题,也花了不少时间来查找相关资料或请教高人,最终都还算解决了,现在我将这些问题 ...

  4. (持续更新) C# 面试技术点、常见SQL技术点 和 解决高并发的相关技术

    这篇博客 持续更新. 方便小伙伴们学习与面试前的复习

  5. ASP.NET MVC 5 系列 学习笔记 目录 (持续更新...)

    前言: 记得当初培训的时候,学习的还是ASP.NET,现在回想一下,图片水印.统计人数.过滤器....HttpHandler是多么的经典! 不过后来接触到了MVC,便立马爱上了它.Model-View ...

  6. 【 js 基础 】【 源码学习 】源码设计 (持续更新)

    学习源码,除了学习对一些方法的更加聪明的代码实现,同时也要学习源码的设计,把握整体的架构.(推荐对源码有一定熟悉了之后,再看这篇文章) 目录结构:第一部分:zepto 设计分析第二部分:undersc ...

  7. java 学习必备的软件,持续更新中

    小编会持续更新在学习Java过程中需要的软件以及各种文件: 话不多说,看行动! 一:JDK (1)JDK1.8(*64): 链接:https://pan.baidu.com/s/1vM0jNXn2CT ...

  8. 状压dp(状态压缩&&dp结合)学习笔记(持续更新)

    嗯,作为一只蒟蒻,今天再次学习了状压dp(学习借鉴的博客) 但是,依旧懵逼·································· 这篇学习笔记是我个人对于状压dp的理解,如果有什么不对的 ...

  9. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

随机推荐

  1. 二叉树Bynary_Tree(2):二叉树的递归遍历

    7/18/2017 正在码,理解完就写博 7/21/2017 终于码完,借助链表实现的队列撸一个二叉树对于我来说有难度,撸了两天没有成果,我最后选用的是数组实现的循环队列去撸一个二叉树 正文如下: 以 ...

  2. 监听键盘弹起View上调

    可以用三方库IQKeyboardManager 用这个第三方 http://www.jianshu.com/p/f8157895 #pragma mark - keyboard events - // ...

  3. nginx在 window下 自动退出 php-cgi

    win32+nginx+php自动挂掉php-cgi.exe    RunHiddenConsole E:/wnmp/php5/php-cgi.exe -b 127.0.0.1:9000 -c &qu ...

  4. qrc资源文件加载后,裸机环境下图片不显示

    问题描述:在qt开发环境下,使用qss进行界面美化工作,里面包含许多图片资源.最后项目决定把这些图片资源和代码一起打包.然后就把图片资源和qss文件一起编入qrc文件中进行编译.在本机开发环境下是没有 ...

  5. WPF的消息机制(二)- WPF内部的5个窗口之隐藏消息窗口

    目录 WPF的消息机制(一)-让应用程序动起来 WPF的消息机制(二)-WPF内部的5个窗口 (1)隐藏消息窗口 (2)处理激活和关闭的消息的窗口和系统资源通知窗口 (3)用于用户交互的可见窗口 (4 ...

  6. js介绍

    ---恢复内容开始--- js介绍 最近学习了js,那么我今天给大家介绍下js.希望对初学者有些帮助. js就是常说的JavaScript.JavaScript是目前世界上最流行的编程语言之一.这门语 ...

  7. 由浅入深理解Java线程池及线程池的如何使用

    前言 多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担.线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory ...

  8. SpringMVC PathVariable和post、get、put、delete请求

    1.PathVariable 可以映射URL中的占位符到目标方法的参数中. 2.Rest风格的URL 以CRUD为例: 新增:/order POST 修改:/order/id PUT 获取:/orde ...

  9. class java.awt.HeadlessException : No X11 DISPLAY variable was set, but this program performed an operation which requires it.

    今天上午打印回单功能发布到测试环境,报了: class java.awt.HeadlessException : No X11 DISPLAY variable was set, but this p ...

  10. 配置apache的文件访问路径

    本例中,我们让apache访问"F:/testObject/php"路径: 一.修改http.conf文件配置 访问路径:"apache/conf/httpd.conf& ...