为初学者逐步创建PHP教程,使它的从头开始创建你的PHP程序: 基本身份验证,成员资格和CRUD功能

分享于 

47分钟阅读

Web开发

  繁體 雙語

介绍

对创建自己的网站感兴趣? 想知道拥有一个登录/注销功能的网站有多酷? 想了解如何在数据库中创建。读取。更新或者 Delete(CRUD) 记录? 你对以前的教程有没有 lost? 我将教你如何创建一个从头开始,你会知道每一个细节如何工作。 如果你是后端网络开发新手,本教程适用于你。 我将详细解释所有细节,这样你就不必研究使用的特定方法。 我们将不使用任何框架来保持简单。 同样,我也不会关注网站设计,因为在功能之后,很容易实现设计。 当用户登录时,要做的是一个简单的

*Shameless plug*

此外,你还可以从这里下载我的ASP.NET 5版本,在这里是正确的版本。

我也有我的nodejs/express,在这里使用了MongoDB版本的。

pre

在本教程中,我们将使用一些能增强开发的语言。 如果你真的不知道我所提到的任何事情,那就可以了。 试着用流动的方法。 因为我不打算使用高级方法来实现这一点,所以很容易理解它们。 因为这是为网站创建了一个后端服务,所以你至少必须知道以下非常非常基础的知识:

  • 这将永远不会让你在网页开发过程中从列表中去掉。 我为什么要把这个? LOL。
  • 用于重定向脚本的 JavaScript。 现在不需要 jQuery
  • mySQL - 最基本的查询语言。 我们将把这个用于我们的CRUD ( 创建,读取,更新,删除) 功能。

对于该软件,你将需要以下内容:

  • 文本编辑器sublime text/NotePad++。 这将作为我们的编码环境。
  • 这是我们的网络服务器。 我们将保存网站文件并将数据保存到数据库中。
  • 只要你的浏览器不消耗大量内存,你就可以使用任何浏览器。
  • 确保安装了那些 3。 如果未完成安装,请不要继续。 我已经提供了一个超链接来。

本主题中我们的议程的收费为:

  • 在数据库中创建。读取。更新和记录使用语句。
  • 简单的认证和安全 - 登录和注销,处理未经授权的用户并限制访问。
  • 简单的时间和日期操作 - 显示时间和日期过帐并监视你的帖子。
  • 显示 public 和 private 数据 显示只显示登录用户的信息和 public
  • 简介和摘要 - final 输出和一些注释。 常见问题解答也在这里。

主题内容:

注意:如果你停在某部分或者想快速搜索,你只需按 ctrl + f,然后查找你上次停止的号码。

  • 设置服务器
  • 创建 public HTML页面的
  • 创建数据库
  • 将用户添加到数据库
  • 用户登录:身份验证
  • 为登录用户设置主页,并注销
  • 测试页安全性
  • 向列表中添加数据 - 用户访问
  • 在主页中显示显示数据
  • 编辑数据
  • 删除数据
  • 显示 public 数据
  • de简介和摘要

确保按照时间顺序。 不完成前一部分不执行,除非你知道代码。

在开始之前,请注意以下事项:

如果图片不清晰或者模糊,你可以点击它以查看它的大小更大。 另外,我要使用图像显示代码,而不是显示原始文本。 ----------Real教程开始 Here----------

1.设置你的服务器

现在,我们已经准备好了,作为编程基础,让我们开始创建一个简单的基于java的"Hello World"插件,在我们的服务器上。

首先,转到你安装 XAMPP ( 通常在 C:xampp )的目录。 从那里到 htdocs文件夹and创建一个名为" MyFirstWebsite"文件夹。

1 - PHP101

现在,你已经为你的网站创建了一个本地 URL。 文件夹将用于在所有网站文件(. html,. php,. css,. js, 等等 ) 中提供。 打开你的文本编辑器,让我们开始 !

我使用 sublime text 作为文本编辑器。 如果你使用 NotePad++ 或者其他任何工具,则可以。 它不是一个大的因素,但它只是一个偏好,你想用哪一个。

我们要做的是一个基本的HTML页面,并使用一个基本的PHP语法从服务器显示"Hello World"。 然后,键入以下语法:

Hello World


<html>


 <head>


 <title>My first PHP Website</title>


 </head>


 <body>


 <?php


 echo "<p>Hello World!</p>";


 ?>


 </body>


</html>



将文件保存到" MyFirstWebSite"文件夹,并将它的作为保存。 ( 在图像的顶部看到的目录)

现在你已经拥有了文件。 现在让我们打开你的XAMPP 控制面板。 如果它没有出现在你的桌面上,它位于你的arraylist文件夹中,如图所示:

Untitled

Untitled

现在已经存在,通过单击操作栏上的"开始"按钮来运行你的Apache和 mySQL。 你应该看到一个随机的PID和缺省的端口号。 Apache 是我们网络服务器的NAME,它将处理所有文件以及作为与网络浏览器的通信,我们的数据库将存储所有信息。

打开网页浏览器,在地址栏中,键入本地主机。 你应该可以看到你的XAMPP菜单。

如果你是第一次运行它,它会问你喜欢什么语言,只是简单地选择它,它会引导你到菜单。 如果你注意到目录是 localhost/漪,那么即使你输入本地主机,默认页面也会引导你。

Untitled

如果出现这种情况,那么这意味着你的XAMPP服务器运行。 现在让我们尝试运行你刚刚放置的网站。 尝试键入 localhost localhost/myfirstwebsite。 应与以下图片相同。

Untitled

注意,URL是由htdocs文件夹派生的,它来自于htdocs文件夹,它自动读取名为"索引"的文件( 即 index.html。index.aspx, 等),它作为默认页面。 键入 localhost/MyfirstWebsite/index.php 是相同的。 我们也可以通过简单的重命名这个文件夹来创建你的定制 NAME,但是让我们只需要 MyFirstWebsite。

注意:如果没有名为索引的文件,输入了 URL,则将收到错误 404,因为服务器上的文件不存在。 如果你有不同的文件,而不是命名索引。 <extention>,你必须指定特定的文件 NAME。 E.x: localhost/myfirstwebsite/page.php

2.创建 public HTML页面

接下来,让我们重新修改我们的网站,并添加一个注册链接,用户可以 register 以及登记页面。 让我们使用下面的代码修改主页:

index.php

Untitled


<html>


 <head>


 <title>My first PHP Website</title>


 </head>


 <body>


 <?php


 echo "<p>Hello World!</p>";


 ?>


 <a href="login.php"> Click here to login 


 <a href="register.php"> Click here to register 


 </body>


</html> 



你可以看到,我们只添加了 2个链接,用于登录和 register。 让我们先创建注册页面:

register.php

Untitled


<html>


 <head>


 <title>My first PHP Website</title>


 </head>


 <body>


 <h2>Registration Page</h2>


 <a href="index.php">Click here to go back<br/><br/>


 <form action="register.php" method="POST">


 Enter Username: <input type="text" name="username" required="required" /> <br/>


 Enter password: <input type="password" name="password" required="required" /> <br/>


 <input type="submit" value="Register"/>


 </form>


 </body>


</html>



如你所见,这只是用户可以输入自己的凭据的基本形式。 现在登录页面:

提示:只复制相同的代码以使事情更快。

login.php

Untitled


<html>


 <head>


 <title>My first PHP Website</title>


 </head>


 <body>


 <h2>Login Page</h2>


 <a href="index.php">Click here to go back<br/><br/>


 <form action="checklogin.php" method="POST">


 Enter Username: <input type="text" name="username" required="required" /> <br/>


 Enter password: <input type="password" name="password" required="required" /> <br/>


 <input type="submit" value="Login"/>


 </form>


 </body>


</html>



基本上它只是与 register.php 相同的代码,但是所做的更改是带下划线的。

注意:在这里单击完成完整的login.php 代码

再次尝试运行 localhost/myfirstwebsite,你的页面应该如下所示:

index.php

Untitled

login.php

Untitled

register.php

Untitled

创建数据库和表 3

现在我们已经有了 public的基本页面。 让我们进入数据库。 首先,键入 localhost/phpmyadmin。 这将引导你进入phpmyadmin主页:

localhost/phpmyadmin。

Untitled

从那里到位于顶部的数据库选项卡,然后从中间的文本框中输入 first_db,然后单击创建。 只需保留排序规则。

Untitled

你已经成功创建了第一个数据库。 现在,让我们创建一个 table,我们可以在其中对用户和显示信息进行 register。 首先,点击位于左侧的first_db,创建一个名为用户,然后单击 3,然后单击 go go。

Untitled

对于表结构,请确保具有以下字段,然后单击保存:

  • 格式:列 NAME - 类型- 长度- 空属性- 其他属性
  • id - INT - N/A - 不为空- 自动递增
  • 用户名- varchar - 50 - 不为空
  • 密码- varchar - 50 - 不为空

默认情况下,如果未指定,则保留所有内容。

Untitled

注意:你需要向右滚动以进行。 我只是编辑图片以适应A_I字段。

接下来,创建另一个名为的名为list列表和表结构的table:

  • id - INT - N/A - 不为空- 自动递增
  • 详细信息- 文本- 非 null
  • date_posted - varchar - 30 - 不为空
  • time_posted - 时间- 非空
  • date_edited - varchar - 30 - 不为空
  • time_edited - 时间- 非空
  • public -varchar - 5 - 不为空

Untitled

将用户添加到数据库

既然我们有了桌子。 让我们进入有趣的部分,让你的注册页面进入行动。 在 registration.php 中,添加以下 below 代码:

register.php

Untitled


<html>


 <head>


 <title>My first PHP Website</title>


 </head>


 <body>


 <h2>Registration Page</h2>


 <a href="index.php">Click here to go back<br/><br/>


 <form action="checklogin.php" method="POST">


 Enter Username: <input type="text" name="username" required="required" /> <br/>


 Enter password: <input type="password" name="password" required="required" /> <br/>


 <input type="submit" value="Register"/>


 </form>


 </body>


</html>



下面是对代码的说明:

  • 如果clicked提交按钮clicked检查表单是否收到了POST方法,$_SERVER["REQUEST_METHOD"] =="POST"。 POST 方法是在的html中创建的,代价是 注意:在这里单击 ,以获取表单方法参考。
  • $_POST[''] - 获取来自POST方法的NAME。 这只是简单地从表单中获取基于 NAME的输入。 在我们的例子中它是用户名和密码。
  • 将该输入封装为一个字符串,以防止SQL注入输入。 这样可以确保字符串不会从不必要的字符中转义。 单击这里单击 了解有关SQL注入的更多信息。

现在尝试转到你的register.php,然后尝试输入任何内容,然后单击"register"。 在我的例子中,我把用户名 xtian 和密码放在 123456. 它应该显示输入的below。 这是我的样本:

Untitled

在这个部分中,你应该了解如何从表单获取输入。 现在将它添加到数据库。 在 register.php 上,添加以下代码:

register.php

Untitled


<html>


 <head>


 <title>My first PHP Website</title>


 </head>


 <body>


 <h2>Registration Page</h2>


 <a href="index.php">Click here to go back<br/><br/>


 <form action="checklogin.php" method="POST">


 Enter Username: <input type="text" name="username" required="required" /> <br/>


 Enter password: <input type="password" name="password" required="required" /> <br/>


 <input type="submit" value="Register"/>


 </form>


 </body>


</html>



alert("Username has been taken!");</script>';//Prompts the user


 Print '<script>window.location.assign("register.php");</script>';//redirects to register.php


 }


 }



 if($bool)


 {


 mysql_query("INSERT INTO users (username, password) VALUES ('$username', 'password')");//inserts value into table users


 Print '<script>alert("Successfully Registered!");</script>';//Prompts the user


 Print '<script>window.location.assign("register.php");</script>';//redirects to register.php


 }


}


?>



注意:在这里单击以完成完整的register.php 文件

下面是对代码的说明:

  • mysql_connect ("服务器名称","服务器用户名","服务器密码") - 用于连接我们的XAMPP服务器的语法。 localhost localhost localhost127.0.0.1 是服务器的服务器。 默认用户名为 root,默认为 default。
  • mysql_select_db ("数据库名称") - 选择要使用的数据库。
  • 如果条件不满足, ('消息') 显示错误消息。
  • mysql_query ('SQL查询') - SQL查询。 在这里单击一些SQL查询示例。 再次,我不是在这里讨论 mySQL。
  • mysql_fetch_array ('查询') 获取 table 中的所有查询以显示或者操作数据。 它被放置在一个while循环中,以便查询所有行。 注意,注意每个循环只查询行,这就是为什么需要循环循环。
  • $row['row 名称'] current当前查询中的列的值。 它被表示为一个 array。 在我们的例子中,$row 是循环中行的变量的NAME。

尝试你之前做过的输入,看看会发生什么。 它应提示你已经成功注册。 尝试 并查看你的用户表:

Untitled

恭喜现在你已经知道如何使用数据验证向数据库中添加数据。

。) 用户登录:身份验证服务器

现在登录页面。 让我们创建一个名为 checklogin.php的新文件。 我们将重新创建一个名为 " checklogin.php"的操作,特别是 <表单 action action method="POST"> action。 如果你在 register.php 上注意到,它也在 register.php 上,因为后端是在同一个文件上完成的。

现在让我们用下面的语法来编写 checklogin.php:

checklogin.php

Untitled


<?php


 session_start();


 $username = mysql_real_escape_string($_POST['username']);


 $password = mysql_real_escape_string($_POST['password']);


 $bool = true;



 mysql_connect("localhost", "root", "") or die (mysql_error()); //Connect to server


 mysql_select_db("first_db") or die ("Cannot connect to database"); //Connect to database


 $query = mysql_query("Select * from users WHERE username='$username'"); // Query the users table


 $exists = mysql_num_rows($query); //Checks if username exists


 $table_users = "":


 $table_password = "";


 if($exists> 0) //IF there are no returning rows or no existing username


 {


 while($row = mysql_fetch_assoc($query)) // display all rows from query


 {


 $table_users = $row['username']; // the first username row is passed on to $table_users, and so on until the query is finished


 $table_password = $row['password']; // the first password row is passed on to $table_password, and so on until the query is finished


 }


 if(($username == $table_users) && ($password == $table_password))// checks if there are any matching fields


 {


 if($password == $table_password)


 {


 $_SESSION['user'] = $username; //set the username in a session. This serves as a global variable


 header("location: home.php"); // redirects the user to the authenticated home page


 }


 }


 else


 {


 Print '<script>alert("Incorrect Password!");</script>'; // Prompts the user


 Print '<script>window.location.assign("login.php");</script>'; // redirects to login.php


 }


 }


 else


 {


 Print '<script>alert("Incorrect username!");</script>'; // Prompts the user


 Print '<script>window.location.assign("login.php");</script>'; // redirects to login.php


 }


?>



注意:在这里单击完成完整的checklogin.php 代码

下面是代码( 一些前面解释过,所以不需要重复)的说明:

  • session_start() - 启动会话。 这通常在经过验证的页面上完成。 我们使用这一点的原因是,这对于 $_SESSION[''] 是必需的。
  • mysql_num_rows() - 返回整数。 这将根据查询计算所有行。
  • $_SESSION['name'] - 用作整个会话的会话 NAME。 这与面向对象编程中的public 变量相对应。 我们将使用这个来验证用户是否已经验证过。

现在尝试用错误的用户名和密码测试你的输入。 它应该返回所需的提示。 测试后,尝试输入正确的值。 它应该能让你找到 home.php。

注意:还不存在,所以会产生错误 404.

为登录用户设置主页并注销

现在已经验证了,现在让我们用下面的语法创建主页( home.php ):

home.php

Untitled


<html>


 <head>


 <title>My first PHP Website</title>


 </head>


 <?php


 session_start(); //starts the session


 if($_SESSION['user']){ // checks if the user is logged in 


 }


 else{


 header("location: index.php"); // redirects if user is not logged in


 }


 $user = $_SESSION['user']; //assigns user value


 ?>


 <body>


 <h2>Home Page</h2>



<hello>! 


 <!--Display's user name-->


 <a href="logout.php">Click here to go logout</a><br/><br/>


 <form action="add.php" method="POST">


 Add more to list: <input type="text" name="details" /> <br/>


 Public post? <input type="checkbox" name="public[]" value="yes" /> <br/>


 <input type="submit" value="Add to list"/>


 </form>


 <h2 align="center">My list</h2>



IdDetailsEditDelete

</正文> </html>

下面是对代码的说明:

  • session_start(),基本上启动会话。 $_SESSION['']. 必需
  • header() - 重定向用户。

尝试刷新浏览器,它应该如下所示:

Untitled

既然已经有了家,让我们尝试创建我们的logout.php,并测试用户会话是否已经关闭。 如果用户注销,那么用户不应该访问 。com。 下面是一个简单的语法,用于 logout.php

logout.php

Untitled


<?php


 session_start();


 session_destroy();


 header("location:index.php");


?>



这个语法很简单, session_destroy() 只删除会话的意义, $_SESSION[''] simply home。

7 测试页安全性

现在尝试刷新 home.php 并点击注销。 现在尝试单击浏览器的后退按钮,看看发生了什么:

Untitled

如你所见,它并没有引导你去 home.php,因为你已经注销了。 现在进行第二次测试,尝试手动输入地址 localhost/MyFirstWebsite/home.php。 同样的情况也应该发生。 由于已经注销,即使是手动输入的地址也不能访问授权页面。 我们做了一个简单的安全机制,将未授权的用户重定向回 public 页面。

现在尝试再次登录,让我们回到 home.php。

向列表中添加数据用户访问仅

在下一步中,让我们创建对列表项的添加。 你将从表单中注意到,它以 method="POST">编写,表示 HTTP POST 请求转到 add.php,并使用以下语法创建 add.php:

add.php

Untitled


<?php


 session_start();


 if($_SESSION['user']){


 }


 else{ 


 header("location:index.php");


 }



 $details = mysql_real_escape_string($_POST['details']);


 $time = strftime("%X"); //time


 $date = strftime("%B %d, %Y"); //date



 Print "$time - $date - $details";


?>



注意,这不是我们官方的语法,我只是演示时间和日期语法,并获取你的输入。

现在回到 home.php,然后尝试添加一个项目,然后单击"添加到列表"。

Untitled

这应该是 add.php 上的以下输出:

Untitled

你可以看到我们有最新的时间,日期和你的输入。 下面是对代码的说明:

  • strftime() - 根据你所放置的格式来获取时间。
  • %X - 当前系统时间。
  • %B - 当前系统月。
  • %d - 当前系统日。
  • %Y - 当前系统年度。

现在让我们修改 add.php,并将以下数据与复选框中的数据一起添加到数据库中:

add.php

Untitled


<?php


 session_start();


 if($_SESSION['user']){


 }


 else{ 


 header("location:index.php");


 }



 if($_SERVER['REQUEST_METHOD'] == "POST")


 {


 $details = mysql_real_escape_string($_POST['details']);


 $time = strftime("%X"); //time


 $date = strftime("%B %d, %Y"); //date


 $decision = "no";



 mysql_connect("localhost","root","") or die(mysql_error()); //Connect to server


 mysql_select_db("first_db") or die("Cannot connect to database"); //Conect to database


 foreach($_POST['public'] in $each_check) //gets the data from the checkbox


 {


 if($each_check!= null){ //checks if checkbox is checked


 $decision = "yes"; // sets the value


 }


 }



 mysql_query("INSERT INTO list(details, date_posted, time_posted, public) VALUES ('$details','$date','$time','$decision')"); //SQL query


 header("location:home.php");


 }


 else


 {


 header("location:home.php");


 }


?>



注意:在这里单击完成完整的add.php 代码

下面是一个小解释:

  • foreach() - 获取复选框的值。 你会注意到,表单中的复选框格式是 name="复选框 []"。 要从复选框中获取数据,必须将它的实例化为 array。 这样做将使从多个复选框中获取数据成为可能。

现在尝试输入一些数据并单击"添加到列表"。 在我的例子中,我将再次使用鱼。 进入phpmyadmin并让我们看看数据是否已经被添加。 以下是我的案例的结果:

localhost/phpmyadmin。

Untitled

9.显示主页中的数据

现在我们已经看到数据已经成功地添加了。 现在让我们在主页中显示数据。 让我们修改 home.php,并为日期添加一些列:

home.php

Untitled


<html>


 <head>


 <title>My first PHP Website</title>


 </head>


 <?php


 session_start(); //starts the session


 if($_SESSION['user']){ // checks if the user is logged in 


 }


 else{


 header("location: index.php"); // redirects if user is not logged in


 }


 $user = $_SESSION['user']; //assigns user value


 ?>


 <body>


 <h2>Home Page</h2>



<hello>! 


 <!--Display's user name-->


 <a href="logout.php">Click here to go logout</a><br/><br/>


 <form action="add.php" method="POST">


 Add more to list: <input type="text" name="details" /> <br/>


 Public post? <input type="checkbox" name="public[]" value="yes" /> <br/>


 <input type="submit" value="Add to list"/>


 </form>


 <h2 align="center">My list</h2>


 ';


 Print '";


 Print '";


 Print '";


 Print '";


 Print '';


 Print '';


 Print '';


 Print '';


 }


?>



IdDetailsPost TimeEdit TimeEditDeletePublic帖子
。$row['id']。"。$row['details']。"。$row['date_posted']。"-"。$row['time_posted']"。$row['date_edited']。"-"。$row['time_edited']"编辑工具delete'$row['public']。'。'

</正文> </html>

对添加代码的解释非常简单。 它只是显示来自while循环的数据。 在我们的教程之前已经解释过了,因这里我相信你应该了解获取查询中数据的过程。 回到浏览器,尝试刷新你的home.php 并查看发生了什么:

Untitled

它现在应该显示数据。 从我们的CRUD清单中,我们已经完成了创建和读取。 接下来是 update(edit) 和 delete 信息。 如果你会注意到我们在列上显示了编辑和 delete 链接。 在列表中添加另一个名为"金枪鱼"的数据,以获得另一个示例,这一次,它是隐私,不允许使用:

Untitled

10.) 编辑数据

现在我们尝试编辑数据,我们将使用一个叫做""的新功能。 对于以前的方法,我们一直使用 POST 作为http请求,但是这次,让我们使用获取和删除记录,并将它的删除。 首先,让我们修改 home.php,并将少量代码添加到 2列:

home.php

Untitled


<html>


 <head>


 <title>My first PHP Website</title>


 </head>


 <?php


 session_start(); //starts the session


 if($_SESSION['user']){ // checks if the user is logged in 


 }


 else{


 header("location: index.php"); // redirects if user is not logged in


 }


 $user = $_SESSION['user']; //assigns user value


 ?>


 <body>


 <h2>Home Page</h2>



<hello>! 


 <!--Display's user name-->


 <a href="logout.php">Click here to go logout</a><br/><br/>


 <form action="add.php" method="POST">


 Add more to list: <input type="text" name="details" /> <br/>


 Public post? <input type="checkbox" name="public[]" value="yes" /> <br/>


 <input type="submit" value="Add to list"/>


 </form>


 <h2 align="center">My list</h2>


 ';


 Print '";


 Print '";


 Print '";


 Print '";


 Print '';


 Print '';


 Print '';


 Print '';


 }


?>



IdDetailsPost TimeEdit TimeEditDeletePublic帖子
。$row['id']。"。$row['details']。"。$row['date_posted']。"-"。$row['time_posted']"。$row['date_edited']。"-"。$row['time_edited']"编辑工具delete'$row['public']。'。'

</正文> </html>

注意,我们只为编辑和 delete 链接添加了URL参数即 id。 接下来,我们将使用这个来处理数据。 我们使用 id的原因是它是惟一的标识符。 用户可以输入相同的数据,因此不推荐使用细节作为以后操作的平均操作。

试着把你的cursor 放到编辑链接,你会看到id的值在下面:

Untitled

既然我们已经,让我们尝试创建 edit.php 并尝试从那里获取数据:

edit.php

行 1 - 42

Untitled


<html>


 <head>


 <title>My first PHP Website</title>


 </head>


 <?php


 session_start(); //starts the session


 if($_SESSION['user']){ // checks if the user is logged in 


 }


 else{


 header("location: index.php"); // redirects if user is not logged in


 }


 $user = $_SESSION['user']; //assigns user value


 ?>


 <body>


 <h2>Home Page</h2>



<hello>! 


 <!--Display's user name-->


 <a href="logout.php">Click here to go logout</a><br/><br/>


 <a href="home.php">Return to home page</a>


 <h2 align="center">Currently Selected</h2>


 0)


 {


 while($row = mysql_fetch_array($query))


 {



Some explanations to the code:



  • 空( ) 检查该值是否为空的方法。 如果你想检查它是否是空的,那么语法可以反转,如果它是空的,那么它是语法,empty()
  • 用于从参数中获取值的 $_GET['']。 ,我们使用 作为URL参数,因此语法将是
  • $id_exists - 检查给定标识是否存在的变量。
  • 我们将放入会话中以便在另一个文件中使用。

行 42 - 76 Untitled


Print "<tr>";


 Print '






";打印'";打印'";打印'";打印'";打印"";} } 其他 { $id_exists = false ;} }? >

IdDetailsPost TimeEdit TimePublic帖子
。$row['id']。"。$row['details']。"'$row['date_posted']。"-"。$row['time_posted']."'$row['date_edited']。"-"。$row['time_edited']."。$row['public']。"

<br/> 输入新的详细信息:<输入 type="文本"name="详情"/> <br/> public post? <input"复选框 name="public submit submit submit submit submit submit submit submit update update update { align= edited edited edited。 <:/body/body> </html> 这里Click完整的edit.php 代码( 仅参考前端部分。? Github源)

把可变的 $id_exists的原因是,用户修改了URL参数为非现有数字时,我们可以显示数据不存在的提示符。

现在尝试单击edit链接into到第一行,它应该显示如下:

Untitled

完整的edit.php 代码:


<html>


 <head>


 <title>My first PHP Website</title>


 </head>


 <?php


 session_start(); //starts the session


 if($_SESSION['user']){ // checks if the user is logged in 


 }


 else{


 header("location: index.php"); // redirects if user is not logged in


 }


 $user = $_SESSION['user']; //assigns user value


 ?>


 <body>


 <h2>Home Page</h2>



<hello>! 


 <!--Display's user name-->


 <a href="logout.php">Click here to go logout</a><br/><br/>


 <a href="home.php">Return to home page</a>


 <h2 align="center">Currently Selected</h2>


 0)


 {


 while($row = mysql_fetch_array($query))


 {


 Print"";


 Print '";


 Print '";


 Print '";


 Print '";


 Print '";


 Print"";


 }


 }


 else


 {


 $id_exists = false;


 }


 }


?>



IdDetailsPost TimeEdit TimePublic帖子
。$row['id']。"。$row['details']。"'$row['date_posted']。"-"。$row['time_posted']."'$row['date_edited']。"-"。$row['time_edited']."。$row['public']。"

<br/> 输入新的详细信息:<输入 type="文本"name="详情"/> <br/> public post? <input"复选框 name="public submit submit submit submit submit submit submit submit update update update { align= edited edited edited。 <:/body/body> </html> 这里是完整的edit.php 代码( 仅参考前面的代码(。? Github源)

我们尝试通过删除来修改URL参数id=1 and localhost/MyFirstWebsite/edit.php,它应该是这样的:

Untitled

在我们的例子中,尝试放置一个大于id号的值,在我们的例子中,我们尝试,它应该是这样:

localhost/MyFirstWebsite/edit.php?id=5

Untitled

现在我们已经保护了URL参数,现在让我们来放置编辑语法。 让我们回到 edit.php,并添加以下代码来更新数据库的信息:

edit.php

Untitled


<?php


 if($_SERVER['REQUEST_METHOD'] == "POST")


 {


 mysql_connect("localhost", "root", "") or die (mysql_error()); //Connect to server


 mysql_select_db("first_db") or die ("Cannot connect to database"); //Connect to database


 $details = mysql_real_escape_string($_POST['details']);


 $public = "no";


 $id = $_SESSION['id'];


 $time = strftime("%X"); //time


 $date = strftime("%B %D, %Y"); //date



 foreach($_POST['public'] as $list)


 {


 if($list!= null)


 {


 $public = "yes";


 }


 }


 mysql_query("UPDATE list SET details='$details', public='$public', date_edited='$date', time_edited='$time' WHERE id='$id'");


 header("location:home.php");


 }


?>




在这里单击以获得完整的edit.php 代码( Github )

现在尝试刷新并返回到编辑页面。 让我们尝试一个不同的数据。 在我的例子中,我将使用"salmon"并将它的更改为非公开:

edit.php? id=1

Untitled

继续,点击更新列表,你应该被重定向到 home.php,并看到更新后的列表。

Untitled

现在,我们有一个编辑时间和日期显示在编辑时间列。 我们的隐私已经被设定为非公开的,而价值已经变成了 。

恭喜我们已经完成了编辑功能 !

11.) 删除数据

回头看看 CRUD,我们已经完成了 creating(adding), reading(displaying), 和 updating(editing) 记录。 最后一部分,删除记录。 对于这部分,它与我们在编辑过程中所做的相同,但是不同的是SQL语句。 我们将使用 DELETE 语法,而不是使用更新。 为了删除记录,我们必须提示人们确定他们确实要使用这个记录,所以我们将在中添加一个小 javascript。 我们将修改代码并添加一些 int home.php

home.php

Untitled


<table border="1px" width="100%">



 Id


 Details


 Post Time


 Edit Time


 Edit


 Delete


 Public Post



 ';


 Print ''. $row['id']."";


 Print ''. $row['details']."";


 Print ''. $row['date_posted']." -". $row['time_posted']."";


 Print ''. $row['date_edited']." -". $row['time_edited']."";


 Print '<a href="edit.php?id='.$row['id'].'">edit';


 Print '<a href="#" nclick="myfunction('.$row['id'].')">delete</a>';


 Print ''. $row['public']. '';


 Print '';


 }


?>



<script>


 function myFunction(id)


 {


 var r = confirm("Are you sure you want to delete this record?");


 if(r == true)


 {


 window.location.assign("delete.php?id=" + id);


 }


 }


</script>



注意:在这里单击完成完整的home.php 代码

你已经注意到了,我们编辑了 delete的链接。 we href href href href href href href href href onclick function function function function parameter。 below 编写的table 是一个Javascript语法,它的中提示用户如果需要 delete 记录,就可以提示用户。 如果用户确认,页面将定向到 delete.php,并将它的与id的值一起 embedded。 现在让我们创建 delete.php,下面是以下语法:

delete.php

Untitled


<?php


 session_start(); //starts the session


 if($_SESSION['user']){ //checks if user is logged in


 }


 else {


 header("location:index.php"); //redirects if user is not logged in.


 }



 if($_SERVER['REQUEST_METHOD'] == "GET")


 {


 mysql_connect("localhost", "root", "") or die(mysql_error()); //connect to server


 mysql_select_db("first_db") or die("cannot connect to database"); //Connect to database


 $id = $_GET['id'];


 mysql_query("DELETE FROM list WHERE id='$id'");


 header("location:home.php");


 }


?>



注意:在这里单击完成完整的delete.php 代码

代码只是简单,语法也是我们以前使用过的,但是注意到我们已经将请求方法改为 GET。 现在,我们使用 ,因为我们拥有一个URL参数。 现在尝试刷新 home.php,让我们尝试删除第一个记录。 这应该是结果:

提示:

Untitled

最终结果:

Untitled

恭喜现在我们已经正式完成了CRUD语句 !

12.显示 public 数据

最后一部分,显示 public 数据。 我们将显示已经设置为 yes是our在我们的index.php 中,其中是一个非经过身份验证的用户页面。 很简单,我们只需编辑我们的 index.php,然后添加一些php代码和。 下面是我们的更新 index.php:

index.php

Untitled

现在注销并查看默认页面。 它应该类似于下面这样:

Untitled

注意:我们还没有将任何信息设置为,所以你将不会看到数据。

现在让我们再次登录,让我们添加一些更多的数据。 在我的示例中,我添加了以下内容:

  • 沙拉- public
  • 玉米- 非公共
  • 面食- public
  • 鸡- public
  • Spaghetti - 不公开

每个隐私设置的数据 3总数为 6:

home.php

Untitled

现在让我们注销并查看默认页面( index.php )。 它现在应该是这样的:

index.php

Untitled

可以看到,只有显示的显示数据被设置为 public。

恭喜我们已经完成了本课程的finally 教程 !

13.) de简介和摘要

最后,你应该拥有以下文件:

Untitled

如前所述,我将上传已经完成的产品。 在这里点击

如果你想使用我拥有的确切数据,我还上传了数据库的sql文件。 要导入sql文件,只需单击导出然后选择 sql,但是要先创建数据库。 如果你愿意,我可以为你创建一个单独的博客。 请在评论部分中告诉我。

预期的问题

下面是我想你会问到的问题。 我试图预见这些避免混淆:

  • 每当我 register 一个新用户时,就会出现相同的列表。 我以为每个不同的用户都会有一个单独的名单。 我 是不是 做错 什么 了?

这是个很好的问题。 可以看到,我只教授基本的CRUD功能。身份验证和安全性,而不是一个。 为每个用户创建单独的列表需要为每个用户单独的table。 所以,逻辑 behind 每次插入数据后都会插入到另一个 table 中,并将它的与它的他的关系相互关系。 可以使用创建语法为用户创建单独的table,它的内容如下所示:

创建 table $username ( column1 auto_increment,第 column2 varchar(50), 等等 )

注意:你可以在这里单击 Create用于创建 table 语法。

我没有做这个部分的原因是你需要做大量的查询,它会使代码看起来复杂。 如果你自己试试找出方法就更好了。 毕竟你所需要的一切都已经在这个博客里了。

  • 使用母版页更容易? 因为我注意到你必须为每个页面重新编写服务器和数据库连接

是,使用母版页更容易。 我没有使用它的原因是让我们的读者容易理解它的逻辑 behind。 Maser页面可以让初学者感到有点迷惑。

  • 为什么不使用框架? 我打赌这看起来很简单。

我再次在标题中提到,创建你的第一个PHP程序 SCRATCH SCRATCH SCRATCH SCRATCH SCRATCH。 从"模板"开始nothing很好,这样我们的读者就能知道代码的代码。

  • 我知道这可能是开发PHP的旧方法。 我听说有新的特性发布了。

我只是根据自己的掌握。 我已经使用PHP很长时间了,我可能没有听说过新特性。 如果你觉得这个新的看起来不错,那就试试吧。

  • 为什么不为CSS和Javascript创建单独的文件?

简单,我只是向你展示了。 更多的是在后台代码而不是前端代码。 我并没有把重点放在设计上。 如果你要求如何使用PHP设计代码,那么它就像设计常规HTML文件那样简单。

我想一切都结束了。 谢谢大家,希望你们从这个主题中学习。

重申一下,如果你想从头开始学习自己的ASP.NET MVC网络应用程序,你可以在这里查看它的正确答案。 在 Twitter 跟踪我,你可以在任何文章上发布你的反馈和评论。


PHP  FUNC  函数  auth  Basic  functional  
相关文章