精华内容
下载资源
问答
  • 如何用PHP完整的开发一个网站

    万次阅读 2018-12-26 09:53:38
    了解Cookie或者Session种机制 了解种模板操作机制和使用 手头收藏一些好的常用类或方法,能提高我们的开发的速度。如:分页、上传、字符过滤、数据库操作、生成HTML、文件操作等。 (2)...

    在这里插入图片描述
    1、PHPer应具备的知识

    (1)PHP知识:

    熟练掌握基础函数,PHP语句(条件、循环),数组(排序、读取),函数(内部 构造),运算(数学 逻辑),面向对象(继承 接口 封装 多态静态属性)等。

    了解Cookie或者Session一种机制

    了解一种模板操作机制和使用

    手头收藏一些好的常用类或方法,能提高我们的开发的速度。如:分页、上传、字符过滤、数据库操作、生成HTML、文件操作等。

    (2)HTML知识

    (3)JavaScript事件处理

    (4)数据库知识:SQL语句“增删改查” 会使用一种SQL工具

    2、PHP开发的一般流程

    如何用PHP开发一个完整的网站

    (1)尽量完整的需求方案,具体到功能上:

    (2)建模结构UML

    (3)建立数据库

    1、建立的表名、字段名要与他的功能有关系。

    2、根据结构建立数据库表,原则是不定项内容一定要分表。

    3、字段类型要考虑内容是否够用就够就好,选择适合的类型INT Varchar Date

    (4)设计HTML文件和脚本的实现

    根据模和数据库来设计页面是个很科学的方法,当然有的时候有人喜欢根据模型设计页面,数据库基于页面设计,都是可以的。

    设计页面时要考虑到每个细节,包括提示消息页面,错误页面。

    (5)PHP网站源码的书写

    1、先建立底层结构和文件夹(如果是大型的网站同样设计一个文件UMML)

    2、基础功能分类关联,以便今后代码引用。

    3、代码的书写,注意简洁性和函数的使用,内部函数能实现的尽量使用内部函数。

    4、在部分关键位置加以代码注释。

    (6)程序的测试和修正

    1、对于发现的BUG不能就解决BUG而解决,要处于完整程序考虑。避免收之东隅收之桑榆。

    2、对于解决过的BUG已经要详细记录,以便日后更新。
    3、多人开发应该注意什么

    使用版本服务器:CVS、SVN…

    功能:

    1、单个文件历史版本的记录和恢复

    2、文件的锁定和更新

    3、单个或多个文件程序之间的沟通

    4、保护程序的安全性不受单个程序的误操作而丢失
    文章来自:https://www.itjmd.com/news/show-4315.html

    展开全文
  • 用PHP和HTML写一个简单的网站登录注册项目

    万次阅读 多人点赞 2016-04-24 17:44:16
    首先,这是一个很简单的登陆注册页面,请不要在意美观及设计,重点在于登录注册这个功能。...2.login.html :主要包括了一个登录的表单,上面简单的美化是组里的前端javascript的,其中很重要的一点是表单中的 m

    首先,这是一个很简单的登陆注册页面,请不要在意美观及设计,重点在于登录注册这个功能。这个项目由五个分页组成:

    1.index.php :一个简单的首页,有login  register,当用户登录之后,在cookie的有效期内,这两个按钮会变成用户名。

    2.login.html :主要包括了一个登录的表单,上面简单的美化是组里的前端用javascript做的,其中很重要的一点是表单中的   method='post'    action='login.php'  是这个起到了与服务器端运行的php连接与传输的作用。表单标签中的name属性也很重要,php文件中将通过POST['name']来得到用户输入的数据。

    3.login.php :php文件在得到了html表单传输过来的数据之后,询问数据库,查询是否存在与用户输人信息相同的信息。如果存在,则给用户设置一个COOKIE,使他在一段时间内保持登录状态。

    4.register.html:与login.html类似,连接php文件,传送到服务器中。用到了一些javascript的方式来判断用户输入是否合法。

    5.register.php:接收来自html中用户输入的数据后,将数据存入数据库。

    代码如下:

    index.php :

    <?php 
    $flag=0;
    //var_dump($_GET);
    if(isset($_GET["out"])){
        if($_GET["out"]){
            setcookie('uname','',time()-1);
            $flag=1;//防止服务器接收到getout操作时已经认为该用户有cookie,然后下面的COOKIE[NAME]已经有了,服务器返回给他的才是空的
        }
    }
    if($flag!=1){
        $link=mysqli_connect('localhost','root','liqiyao123','test');
        if(isset($_COOKIE['uname'])){
            $name=$_COOKIE['uname'];
            $query=mysqli_query($link,"SELECT username FROM info WHERE username = '$name'");
            $row=mysqli_num_rows($query);
            if($row==1){
                echo "Welcome ".$_COOKIE['uname']."";
                echo '    ';
                echo '<a href="index.php?out=1">logout</a>';//用户logout
            }
        }else{
            echo  '<a href="login.html">login</a>';
            echo  '    ';
            echo  '<a href="register.html">register</a>';
        }
    }
    else{
        echo  '<a href="login.html">login</a>';
        echo  '    ';
        echo  '<a href="register.html">register</a>';
    }?>


    login.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>login</title>
    	<style type="text/css">
    		@import url(http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300);
    		* {
    		  box-sizing: border-box;
    		  margin: 0;
    		  padding: 0;
    		  font-weight: 300;
    		}
    		body {
    		  font-family: 'Source Sans Pro', sans-serif;
    		  color: white;
    		  font-weight: 300;
    		}
    		body ::-webkit-input-placeholder {
    		  /* WebKit browsers */
    		  font-family: 'Source Sans Pro', sans-serif;
    		  color: white;
    		  font-weight: 300;
    		}
    		body :-moz-placeholder {
    		  /* Mozilla Firefox 4 to 18 */
    		  font-family: 'Source Sans Pro', sans-serif;
    		  color: white;
    		  opacity: 1;
    		  font-weight: 300;
    		}
    		body ::-moz-placeholder {
    		  /* Mozilla Firefox 19+ */
    		  font-family: 'Source Sans Pro', sans-serif;
    		  color: white;
    		  opacity: 1;
    		  font-weight: 300;
    		}
    		body :-ms-input-placeholder {
    		  /* Internet Explorer 10+ */
    		  font-family: 'Source Sans Pro', sans-serif;
    		  color: white;
    		  font-weight: 300;
    		}
    		.wrapper {
    		  background: #50a3a2;
    		  background: -webkit-linear-gradient(top left, #50a3a2 0%, #53e3a6 100%);
    		  background: linear-gradient(to bottom right, #50a3a2 0%, #53e3a6 100%);
    		  position: absolute;
    		  left: 0;
    		  width: 100%;
    		  height: 100%;
    		/*  margin-top: -200px;*/
    		  overflow: hidden;
    		}
    		.wrapper.form-success .container h1 {
    		  -webkit-transform: translateY(85px);
    		          transform: translateY(85px);
    		}
    		.container {
    		  max-width: 600px;
    		  margin: 0 auto;
    		  padding: 80px 0;
    		  padding-top:200px; 
    		  height: 400px;
    		  text-align: center;
    		}
    		.container h1 {
    		  font-size: 40px;
    		  -webkit-transition-duration: 1s;
    		          transition-duration: 1s;
    		  -webkit-transition-timing-function: ease-in-put;
    		          transition-timing-function: ease-in-put;
    		  font-weight: 200;
    		}
    		form {
    		  padding: 20px 0;
    		  position: relative;
    		  z-index: 2;
    		}
    		form input {
    		  -webkit-appearance: none;
    		     -moz-appearance: none;
    		          appearance: none;
    		  outline: 0;
    		  border: 1px solid rgba(255, 255, 255, 0.4);
    		  background-color: rgba(255, 255, 255, 0.2);
    		  width: 250px;
    		  border-radius: 3px;
    		  padding: 10px 15px;
    		  margin: 0 auto 10px auto;
    		  display: block;
    		  text-align: center;
    		  font-size: 18px;
    		  color: white;
    		  -webkit-transition-duration: 0.25s;
    		          transition-duration: 0.25s;
    		  font-weight: 300;
    		}
    		form input:hover {
    		  background-color: rgba(255, 255, 255, 0.4);
    		}
    		form input:focus {
    		  background-color: white;
    		  width: 300px;
    		  color: #53e3a6;
    		}
    		form button {
    		  -webkit-appearance: none;
    		     -moz-appearance: none;
    		          appearance: none;
    		  outline: 0;
    		  background-color: white;
    		  border: 0;
    		  padding: 10px 15px;
    		  color: #53e3a6;
    		  border-radius: 3px;
    		  width: 125px;
    		  cursor: pointer;
    		  font-size: 18px;
    		  -webkit-transition-duration: 0.25s;
    		          transition-duration: 0.25s;
    		}
    		form button:hover {
    		  background-color: #f5f7f9;
    		}
    		.bg-bubbles {
    		  position: absolute;
    		  top: 0;
    		  left: 0;
    		  width: 100%;
    		  height: 100%;
    		  z-index: 1;
    		}
    		.bg-bubbles li {
    		  position: absolute;
    		  list-style: none;
    		  display: block;
    		  width: 40px;
    		  height: 40px;
    		  background-color: rgba(255, 255, 255, 0.15);
    		  bottom: -160px;
    		  -webkit-animation: square 25s infinite;
    		  animation: square 25s infinite;
    		  -webkit-transition-timing-function: linear;
    		  transition-timing-function: linear;
    		}
    		.bg-bubbles li:nth-child(1) {
    		  left: 10%;
    		}
    		.bg-bubbles li:nth-child(2) {
    		  left: 20%;
    		  width: 80px;
    		  height: 80px;
    		  -webkit-animation-delay: 2s;
    		          animation-delay: 2s;
    		  -webkit-animation-duration: 17s;
    		          animation-duration: 17s;
    		}
    		.bg-bubbles li:nth-child(3) {
    		  left: 25%;
    		  -webkit-animation-delay: 4s;
    		          animation-delay: 4s;
    		}
    		.bg-bubbles li:nth-child(4) {
    		  left: 40%;
    		  width: 60px;
    		  height: 60px;
    		  -webkit-animation-duration: 22s;
    		          animation-duration: 22s;
    		  background-color: rgba(255, 255, 255, 0.25);
    		}
    		.bg-bubbles li:nth-child(5) {
    		  left: 70%;
    		}
    		.bg-bubbles li:nth-child(6) {
    		  left: 80%;
    		  width: 120px;
    		  height: 120px;
    		  -webkit-animation-delay: 3s;
    		          animation-delay: 3s;
    		  background-color: rgba(255, 255, 255, 0.2);
    		}
    		.bg-bubbles li:nth-child(7) {
    		  left: 32%;
    		  width: 160px;
    		  height: 160px;
    		  -webkit-animation-delay: 7s;
    		          animation-delay: 7s;
    		}
    		.bg-bubbles li:nth-child(8) {
    		  left: 55%;
    		  width: 20px;
    		  height: 20px;
    		  -webkit-animation-delay: 15s;
    		          animation-delay: 15s;
    		  -webkit-animation-duration: 40s;
    		          animation-duration: 40s;
    		}
    		.bg-bubbles li:nth-child(9) {
    		  left: 25%;
    		  width: 10px;
    		  height: 10px;
    		  -webkit-animation-delay: 2s;
    		          animation-delay: 2s;
    		  -webkit-animation-duration: 40s;
    		          animation-duration: 40s;
    		  background-color: rgba(255, 255, 255, 0.3);
    		}
    		.bg-bubbles li:nth-child(10) {
    		  left: 90%;
    		  width: 160px;
    		  height: 160px;
    		  -webkit-animation-delay: 11s;
    		          animation-delay: 11s;
    		}
    		@-webkit-keyframes square {
    		  0% {
    		    -webkit-transform: translateY(0);
    		            transform: translateY(0);
    		  }
    		  100% {
    		    -webkit-transform: translateY(-700px) rotate(600deg);
    		            transform: translateY(-700px) rotate(600deg);
    		  }
    		}
    		@keyframes square {
    		  0% {
    		    -webkit-transform: translateY(0);
    		            transform: translateY(0);
    		  }
    		  100% {
    		    -webkit-transform: translateY(-700px) rotate(600deg);
    		            transform: translateY(-700px) rotate(600deg);
    		  }
    		}
    		.cc{
    			text-decoration: none;
    			color: #53e3a6; 
    			}
    	</style>
    	<script type="text/javascript">
    		
    		 $("#login-button").click(function(event){
    				 event.preventDefault();
    			 
    			 $('form').fadeOut(500);
    			 $('.wrapper').addClass('form-success');
    		});
    		function check(){
    	    {
    		  if(form.username.value == "")//如果用户名为空
    		  {
    			alert("您还没有填写用户名!");
    			form.username.focus();
    			return false;
    		  }
    		  if(form.pass.value == "")//如果密码为空
    		  {
    			alert("您还没有填写密码!");
    			myform.pass.focus();
    			return false;
    		  }
    		}
    		
    		
    	</script>
    </head>
    <body>
    	<div class="wrapper">
    		<div class="container">
    			<h1>Welcome</h1>
    			
    			<form name='form' class="form" method='post' action='login.php' onSubmit="return check()">
    				<input type="text" placeholder="Username" name='username'>
    				<input type="password" placeholder="Password" name='pass'>
    				<button type="submit" id="login-button" name='submit' value='submit'>Login</button>
    				<button type="submit" id="register-button"><a href="register.html" class="cc">register</a></button>
    			</form>
    		</div>
    		
    		<ul class="bg-bubbles">
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    		</ul>
    	</div>
    </body>
    </html>

    login.php

    <?php 
    $username=$_POST['username'];
    $password=$_POST['pass'];
    $link = mysqli_connect('localhost','root','liqiyao123','test');
    $query=mysqli_query($link,"SELECT username,password FROM info WHERE username = '$username'");//找到与输入用户名相同的信息,注意要取出的信息有两项
    $row = mysqli_fetch_array($query);
    if($_POST['submit']){    
        if($row['username']==$username &&$row['password']==$password){
            setcookie('uname',$username,time()+7200);
            echo "<script>alert('successfully');window.location= 'index.php';</script>";
        }
        else echo "<script>alert('failed');history.go(-1)</script>";//返回之前的页面
    }
    include('login.html');?>

    register.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>register</title>
    	<style type="text/css">
    		@import url(http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300);
    		* {
    		  box-sizing: border-box;
    		  margin: 0;
    		  padding: 0;
    		  font-weight: 300;
    		}
    		body {
    		  font-family: 'Source Sans Pro', sans-serif;
    		  color: white;
    		  font-weight: 300;
    		}
    		body ::-webkit-input-placeholder {
    		  /* WebKit browsers */
    		  font-family: 'Source Sans Pro', sans-serif;
    		  color: white;
    		  font-weight: 300;
    		}
    		body :-moz-placeholder {
    		  /* Mozilla Firefox 4 to 18 */
    		  font-family: 'Source Sans Pro', sans-serif;
    		  color: white;
    		  opacity: 1;
    		  font-weight: 300;
    		}
    		body ::-moz-placeholder {
    		  /* Mozilla Firefox 19+ */
    		  font-family: 'Source Sans Pro', sans-serif;
    		  color: white;
    		  opacity: 1;
    		  font-weight: 300;
    		}
    		body :-ms-input-placeholder {
    		  /* Internet Explorer 10+ */
    		  font-family: 'Source Sans Pro', sans-serif;
    		  color: white;
    		  font-weight: 300;
    		}
    		.wrapper {
    		  background: #50a3a2;
    		  background: -webkit-linear-gradient(top left, #50a3a2 0%, #53e3a6 100%);
    		  background: linear-gradient(to bottom right, #50a3a2 0%, #53e3a6 100%);
    		  position: absolute;
    		  left: 0;
    		  width: 100%;
    		  height: 100%;
    		/*  margin-top: -200px;*/
    		  overflow: hidden;
    		}
    		.wrapper.form-success .container h1 {
    		  -webkit-transform: translateY(85px);
    		          transform: translateY(85px);
    		}
    		.container {
    		  max-width: 600px;
    		  margin: 0 auto;
    		  padding: 80px 0;
    		   padding-top:100px;
    		  height: 400px;
    		  text-align: center;
    		}
    		.container h1 {
    		  font-size: 40px;
    		  -webkit-transition-duration: 1s;
    		          transition-duration: 1s;
    		  -webkit-transition-timing-function: ease-in-put;
    		          transition-timing-function: ease-in-put;
    		  font-weight: 200;
    		}
    		form {
    		  padding: 20px 0;
    		  position: relative;
    		  z-index: 2;
    		}
    		form input {
    		  -webkit-appearance: none;
    		     -moz-appearance: none;
    		          appearance: none;
    		  outline: 0;
    		  border: 1px solid rgba(255, 255, 255, 0.4);
    		  background-color: rgba(255, 255, 255, 0.2);
    		  width: 250px;
    		  border-radius: 3px;
    		  padding: 10px 15px;
    		  margin: 0 auto 10px auto;
    		  display: block;
    		  text-align: center;
    		  font-size: 18px;
    		  color: white;
    		  -webkit-transition-duration: 0.25s;
    		          transition-duration: 0.25s;
    		  font-weight: 300;
    		}
    		form input:hover {
    		  background-color: rgba(255, 255, 255, 0.4);
    		}
    		form input:focus {
    		  background-color: white;
    		  width: 300px;
    		  color: #53e3a6;
    		}
    		form button {
    		  -webkit-appearance: none;
    		     -moz-appearance: none;
    		          appearance: none;
    		  outline: 0;
    		  background-color: white;
    		  border: 0;
    		  padding: 10px 15px;
    		  color: #53e3a6;
    		  border-radius: 3px;
    		  width: 125px;
    		  cursor: pointer;
    		  font-size: 18px;
    		  -webkit-transition-duration: 0.25s;
    		          transition-duration: 0.25s;
    		}
    		form button:hover {
    		  background-color: #f5f7f9;
    		}
    		.bg-bubbles {
    		  position: absolute;
    		  top: 0;
    		  left: 0;
    		  width: 100%;
    		  height: 100%;
    		  z-index: 1;
    		}
    		.bg-bubbles li {
    		  position: absolute;
    		  list-style: none;
    		  display: block;
    		  width: 40px;
    		  height: 40px;
    		  background-color: rgba(255, 255, 255, 0.15);
    		  bottom: -160px;
    		  -webkit-animation: square 25s infinite;
    		  animation: square 25s infinite;
    		  -webkit-transition-timing-function: linear;
    		  transition-timing-function: linear;
    		}
    		.bg-bubbles li:nth-child(1) {
    		  left: 10%;
    		}
    		.bg-bubbles li:nth-child(2) {
    		  left: 20%;
    		  width: 80px;
    		  height: 80px;
    		  -webkit-animation-delay: 2s;
    		          animation-delay: 2s;
    		  -webkit-animation-duration: 17s;
    		          animation-duration: 17s;
    		}
    		.bg-bubbles li:nth-child(3) {
    		  left: 25%;
    		  -webkit-animation-delay: 4s;
    		          animation-delay: 4s;
    		}
    		.bg-bubbles li:nth-child(4) {
    		  left: 40%;
    		  width: 60px;
    		  height: 60px;
    		  -webkit-animation-duration: 22s;
    		          animation-duration: 22s;
    		  background-color: rgba(255, 255, 255, 0.25);
    		}
    		.bg-bubbles li:nth-child(5) {
    		  left: 70%;
    		}
    		.bg-bubbles li:nth-child(6) {
    		  left: 80%;
    		  width: 120px;
    		  height: 120px;
    		  -webkit-animation-delay: 3s;
    		          animation-delay: 3s;
    		  background-color: rgba(255, 255, 255, 0.2);
    		}
    		.bg-bubbles li:nth-child(7) {
    		  left: 32%;
    		  width: 160px;
    		  height: 160px;
    		  -webkit-animation-delay: 7s;
    		          animation-delay: 7s;
    		}
    		.bg-bubbles li:nth-child(8) {
    		  left: 55%;
    		  width: 20px;
    		  height: 20px;
    		  -webkit-animation-delay: 15s;
    		          animation-delay: 15s;
    		  -webkit-animation-duration: 40s;
    		          animation-duration: 40s;
    		}
    		.bg-bubbles li:nth-child(9) {
    		  left: 25%;
    		  width: 10px;
    		  height: 10px;
    		  -webkit-animation-delay: 2s;
    		          animation-delay: 2s;
    		  -webkit-animation-duration: 40s;
    		          animation-duration: 40s;
    		  background-color: rgba(255, 255, 255, 0.3);
    		}
    		.bg-bubbles li:nth-child(10) {
    		  left: 90%;
    		  width: 160px;
    		  height: 160px;
    		  -webkit-animation-delay: 11s;
    		          animation-delay: 11s;
    		}
    		@-webkit-keyframes square {
    		  0% {
    		    -webkit-transform: translateY(0);
    		            transform: translateY(0);
    		  }
    		  100% {
    		    -webkit-transform: translateY(-700px) rotate(600deg);
    		            transform: translateY(-700px) rotate(600deg);
    		  }
    		}
    		@keyframes square {
    		  0% {
    		    -webkit-transform: translateY(0);
    		            transform: translateY(0);
    		  }
    		  100% {
    		    -webkit-transform: translateY(-700px) rotate(600deg);
    		            transform: translateY(-700px) rotate(600deg);
    		  }
    		}
    		.cc{
    			text-decoration: none;
    			color: #53e3a6;
    		}
    	</style>
    	<script type="text/javascript">
    		
    		 $("#login-button").click(function(event){
    				 event.preventDefault();
    			 
    			 $('form').fadeOut(500);
    			 $('.wrapper').addClass('form-success');
    		});
    		//验证信息填写是否有误
    		function check()
    		{
    		   if(form.username.value.length<6 || form.username.value.length>16)
    		   {
    		   alert('用户名不合法!请输入6-16位用户名');
    		   form.username.focus();
    		   return false;
    		   }
    		   if(form.pass.value.length<6 ||form.pass.value.length>16)
    		   {
    		   alert('密码不合法!请输入6-16位密码');
    		   form.username.focus();
    		   return false;
    		   }
    		   if(form.pass.value != form.pass2.value)//判断两次输入的密码是否一致
    		   {
    			alert("两次输入的密码不一致!");
    			form.pass.focus();
    			return false;
    		   }
    		}
    	</script>
    </head>
    <body>
    	<div class="wrapper">
    		<div class="container">
    			<h1>Welcome</h1>
    			
    			<form name='form' class="form" action='register.php' method='post' onSubmit="return check();">
    				<input type="text" placeholder="Username" name='username'>
    				<input type="password" placeholder="Password" name='pass'>
    				<input type="password" placeholder="Reconfirm Your Password" name='pass2'>
    				<input type="text" placeholder="Your Name" name='realname'>
    				<input type="Password" placeholder="Your Phonenumber" name='phonenumber'>
    				<button type="submit" id="login-button" ><a href="login.html" class="cc">Login</a></button>
    				<button type="submit" id="register-button" value='submit' name='submit' >Register</button>
    			</form>
    		</div>
    		
    		<ul class="bg-bubbles">
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    			<li></li>
    		</ul>
    	</div>
    </body>
    </html>

    register.php

    <?php 
    $username=$_POST['username'];
    $password=$_POST['pass'];
    $realname=$_POST['realname'];
    $phonenumber=$_POST['phonenumber'];
    $link = mysqli_connect('localhost','root','liqiyao123','test');
    if($_POST['submit']){
        if(mysqli_query($link,"insert into info (username,password,realname,phonenumber) values('$username','$password','$realname','$phonenumber')")){
            setcookie("uname",$username,time()+7200);
           echo "<script>alert('successfully');window.location= 'index.php';</script>";
        }else {
            echo "<script>alert('failed');history.go(-1)</script>";
        }
    }
    include('register.html');?>



    展开全文
  • 用php写了一个爬虫在视频网站上进行视频下载地址的抓取,半个多小时,大约抓取了3万多条ftp地址数据,效果还是可以的。这里总结一下抓取过程中遇到的问题 1:通过访问浏览器来执行php脚本这种访问方式其实并不适合...

    【一起探讨,微信公众号:qdgithub】

    用php写了一个爬虫在视频网站上进行视频下载地址的抓取,半个多小时,大约抓取了3万多条ftp地址数据,效果还是可以的。这里总结一下抓取过程中遇到的问题

    1:通过访问浏览器来执行php脚本这种访问方式其实并不适合用来爬网页,因为要受到php的连接时间,内存等的限制,当然了这里是可以修改php.ini的配置文件,但是还是不推荐使用,

    php做长周期的任务的时候推荐使用php-cli(命令行)的方式进行,这样效率相比web访问的效率要高得多的多

    2:在爬取页面的时候,一开始使用的是file_get_contents()的方式,结果执行一段时间以后php就会报错(failed to open stream: No error ),后来查了一下,有人说curl()函数不会出现上述问题,就采用了curl的方式去采集数据,没有问题

    3:在进行采集之前,最好修改一下php.ini中的参数 user_agent(具体请百度)

    下面是抓取的代码:

     

    <?php
    header( "Content-type:text/html;Charset=utf-8" );
    class Get_info{
         //没有爬过的url
         private $url_arr_no = [ ];
         //已经爬过的url
         private $url_arr_over = [ ];
         //获取url的正则表达式
         private $url_reg ="/<a href=['\"](.*?)['\"].*?>(.*?)<\/a>/i";
         //获取ftp地址的正则表达式
         private $ftp_reg = "/<td[\d\D]*?><a href=\"([\d\D]*?)\">[\d\D]*?<\/a><\/td>/i";
         //url前缀
         private $prefix_url = null;
         //查找到的数据
         public $ftp_result = [ ];
         public function __construct( $url = "" ){
                if( empty( $url ) ){
                        echo "url不能为空";
                        return false;
                }
                $this ->url_arr_no[ ] = $url;
                $this ->prefix_url = $url;
         }
         //开始执行
         public function start( ){
             echo "查找开始<br/>";
                 $ch = curl_init( );
                 curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 );
                 curl_setopt ( $ch , CURLOPT_CONNECTTIMEOUT ,10 );
             while( ! empty( $this ->url_arr_no ) ){
                   //foreach ( $this->url_arr_no as $key => $value ) {  
                          $value = array_shift( $this->url_arr_no );
                              if( substr( $value, 0,8 )  == "/webPlay"){
                                          continue;
                              }
                     if( ! in_array( $value , $this->url_arr_over ) ){ //如果需要查找的url没有爬过,就开始爬
                                         curl_setopt ($ch, CURLOPT_URL, $value );
                                         $content = curl_exec($ch);
                                          //利用正则进行解析页面内容
                                          preg_match_all( $this->url_reg, $content , $url_match );
                                          preg_match_all( $this->ftp_reg, $content , $ftp_match );
                                 //如果新查到的url已经在待查询或者已经查询的数组中存在,就不添加
                                 if( ! empty( $url_match[1] ) ){
                                           foreach( $url_match[1] as $url ){
                                                       if( ! in_array( $url, $this->url_arr_no ) && ! in_array( $url,$this->url_arr_over )){
                                                              $this ->url_arr_no[ ] = $this ->prefix_url.$url;
                                              }
                                           }
                                 }
                                  //如果ftp地址已经存在,就不进行存储
                                  if( ! empty( $ftp_match[1] ) ){
                                        foreach( $ftp_match[1] as $ftp ){
                                              if( ! in_array( $ftp, $this->ftp_result ) ){
                                                     $this ->ftp_result[ ] = $ftp;
                                                     file_put_contents("result.txt" , $ftp."\r\n" , FILE_APPEND);
                                              }
                                        }
                                  }
                                 $this ->url_arr_over[ ] = $value;
                                 $key_arr = array_keys( $this->url_arr_no,$value );
                                 if( ! empty( $key_arr ) ){
                                          foreach( $key_arr as $k => $v ){
                                              unset( $this->url_arr_no[ $v ] );
                                          }
                                 }
                     }
              //}
             }
                 echo "查找完毕";
         }
    }
    $url = "";
    $class = new Get_info( $url );
    $class -> start( );
     ?>

    作者:codefly
    链接:https://juejin.im/post/582acfeba0bb9f006794ccc3

    展开全文
  • 判断一个网站是由哪种语言开发的方法,那么当需要知道一个网站的什么开源程序搭建时,我们该怎么查看和识别呢?在这之前,我们首先应该确保自己了解有哪些常见网站程序可直接拿来?,有了一定知识储备才能谈得上...

    判断一个网站是由哪种语言开发的方法,那么当需要知道一个网站是用的什么开源程序搭建时,我们该怎么查看和识别呢?在这之前,我们首先应该确保自己了解有哪些常见网站程序可直接拿来用?,有了一定知识储备才能谈得上识别。每一种开源程序只要没有被深度二次开发,它的固有特征就总能被找出来。

      一、WordPress博客系统网站特征:

      1、查看网页源代码,搜索看是否有wp-content、wp-includes字样;

      2、访问/robots.txt查看robots协议中有没有屏蔽plugins、support、extend等目录相关文件;

      3、在网站网址后面输入/wp-admin/看是否进入网站的登录页面;

      二、DeDe织梦CMS系统网站特征:

      1、在网站首页和分类栏目页网址后面输入index.html,看是否能访问,输入index.php看是否会跳转到index.html或index.php?upcache=1;

      2、查看网页源代码,搜索看是否有dedeajax、uploads\allimg字样(或类似);

      3、访问/robots.txt查看robots协议中是否有屏蔽/plus/目录相关文件;

      4、访问/tags.php,看是否显示“模板文件不存在,无法解析文档!”;

      三、Discuz论坛系统网站特征:

      1、Discuz系统模板修改相对复杂,许多网站直接在其源代码中搜索Discuz或Comsenz字样即能验证,但也有网站会删除这些版权信息;

      2、Discuz论坛是采用伪静态机制,看页面网址URL是否有类似forum-58-1.html或thread-1860-1-1.htm特征;

      3、查看网页源代码,搜索看是否有data/cache/style、/data/cache/common、creditnotice、defaultstyle等字样;

      四、ECshop网店商城系统网站特征:

      1、查看网页源代码,搜索看是否有process_request、utils.js、transport.js、js/common.js等字样;

      2、访问/themes/default/images/logo.gif默认模板Logo是否存在,访问/flow.php是否为购物车页面;

      3、在网站网址后面输入/admin/看是否进入网站的登录页面;

      五、Z-BlogPHP博客系统网站特征:

      1、查看网页源代码,搜索看是否有zb_users、zb_system、zblogphp.js、c_html_js_add.php等字样;

      2、在网站网址后面输入/zb_system/admin/看是否进入网站的登录页面;

      实际上对这些程序非常熟悉的站长,基本上凭感觉就能识别出来。随着程序版本的变化,这些特征也可能会发生变化,新手就更加需要多熟悉多了解再综合以上知识做出辨别。当然,也有很多网站是愿意保留开源程序版权信息的,所以我们在很多网站网页页脚,就能直接看到powered by discuz、powered by ecshop字样。多说一句,保留版权信息是一种美德,也是尊重开发者劳动成果的表现,除非已获商业授权或已经作者允许,否则希望大家都能坚持保留版权。

    展开全文
  • 如何C++写一个网站

    千次阅读 2019-11-19 20:43:48
    本文中我们将尝试C++写一个简单的网站,探索一些细节性的问题,并报告C++写网站的体验如何。 2.准备工作 无论是之前比较传统的PHP,java,还是新兴的python或Go,在运行网站项目的时候都必须依托于一个webserver...
  • 小白教程——Windows下用PHP一个简单的登录注册页面(一)
  • 在暑假的这几天时间里,制作了一个简单的博客网站。下面我将这几天的操作流程来说一下,在原文末会贴上代码,也会给出下载链接。(闲复制代码麻烦的可以到下载地址这里直接下载点击打开链接) 刚刚更新源码到github...
  • 做一个完整网站的流程(独立完成个人网站

    万次阅读 多人点赞 2019-03-13 15:09:17
    注:我写这个博客的目的只是为了分享我自己做网站的流程,不是教大家一行一行敲代码的,如果是想学语言的基本操作,只能自己...但是总体也不是很麻烦(阿里有个学生价的服务器,如果自己想做一个自己的网站,可以考虑...
  • PHP】五分钟教你编写一个实时弹幕网站

    万次阅读 多人点赞 2016-12-08 19:39:57
    PHP如何开发一个类似的网站?首先要搞定的是前端页面,最起码得有个框,让弹幕飞起来吧。一想到前台,博主头就大(毕竟我不喜欢去扣前端代码,而且出来的东西还巨丑)。那咱们就百度一下吧,看看有什么好用的弹幕...
  • 题库,对于教育机构,学校,在线教育,是很有必要的,网上也有不少的第三方在线题库系统,但是本次案例,会让有需要的人了解题库的开发思路,其实很简单,无非就是一个表单验证,数据库验证。1、先构建表单数据2、把...
  • 做这个网站用了两周时间,在此把这个小项目做一个总结。 功能: DONE. 用户权限管理。包括管理员和普通用户。管理员有所有权限,包括更新网站状态 登录的其他值为用户名和密码,用户名和密码正确,跳转到下一页。...
  • PHP-GTK2 Win32 GUI 程序

    万次阅读 热门讨论 2010-08-20 06:28:00
    PHP-GTK2 Win32 GUI 程序。
  • PHP给前端返回一个JSON‘对象’

    万次阅读 2017-10-24 16:16:22
    解决问题:用php做后台时,如何给前端发起的AJAX请求返回一个JSON格式的"对象";说明:我本身是一个前端,工作久了之后发现要是不掌握一门后端开发语言的话,总感觉有点无力。最近在边做自己的个人网站边...
  • centos7下部署运行一个php项目

    千次阅读 2018-11-12 15:42:30
    个网站用php开发的,以前没有接触过php,那么就那这个项目开刀,先将它部署,也记录一下我遇到的问题,大家少走弯路。 Nginx + php-fpm +centos7 首先我先要在chrome上打开,但是服务器站点部署在linux上,而...
  • 如淘宝,腾讯等网站登录页面,都有APP扫码登录这个功能,去年也一个,基于自己的APP实现, 并非第三方登陆. 思路:1. 生成一个二维码, 二维码链接带有密钥. 2. 数据库表记录这次的密钥, 方便APP返回用户ID时比对. 3...
  • 如果虚拟主机支持.htaccess,可以利用.htacces实现一个网站空间可以多个二级域名指向多个二级目录,建立多个网站。以独立IP虚拟主机为例:  一、将域名做一个泛解析*.xxxx.com 解析到你的空间IP,独立IP虚拟主机...
  • [WAMP网站开发] PHP连接MySQL数据库基础知识

    万次阅读 多人点赞 2017-02-24 12:02:18
    这篇文章主要是最近教学生使用WAMP(Windows+Apache+MySQL+PHP)开发网站,HTML布局首页,PHP连接数据库以及XAMPP操作数据库的基础文章,更是篇教学文章。文章比较基础,希望对能给PHP网站开发的学生做个入门介绍。
  • 最近纠结了一下,如果开发一个大型的网站,我到底应该使用php还是jsp,后台到底使用php还是java,我的选择要么是php要么是java,因为我喜欢linux、unix,当然window平台也必须支持,以便哦的妹纸可以查看。...
  • 用PHP做网站的PV、UV、IP访客统计

    万次阅读 2016-10-07 15:16:43
    用PHP做网站访客统计,听起来好像有点多此一举,想想有那么多好用的统计工具不用,偏偏想自己写?不过,有时还是按项目需求走吧。 就当我是在废话吧,还是想唠叨一下PV、UV、IP三者的定义与区别。 1.PV(page view)...
  • 小时入门PHP

    万次阅读 多人点赞 2016-08-26 22:38:50
    PHP是能让你生成动态网页的工具之。...最近在折腾那个安卓扫码登录的功能,然后网页端是用php了,于是乎看一下php的资料,发现其实和java、jsp有很多相通的地方啊,语法什么的,还有类的使用,感觉非常相似......
  • 章节我们来看用户输入网页后的主界面。 一般来说,默认主页都是index点xxx,比如 index.php, index.html , index.jsp等等。我们来看一下我们的index.php吧 index.php 提醒: 在的两端,不要出现任何空格...
  • php支付宝开发之pc网站支付接入

    万次阅读 2017-11-10 11:29:50
    所以只能选php支付了,不过我们在支付的时候,从官网下载一个demo,然后到蚂蚁金服上面申请个开发账号,配置本地的demo即可。具体的申请详见:点击打开链接 我的支付demo也已经上传到我的个人主页:点击打开...
  • 一个简单的PHP Web论坛

    万次阅读 2015-09-15 17:11:03
    1、需求分析 通过发表文章开始新的讨论话题发表文章来回复已有的文章查看发表的文章查看论坛中的交谈话题查看文章之间的关系,也就是,查看哪篇文章是另外文章的...2、解决方案 2.1 论坛设计 ...index.php 应用程
  • 基于PHP实现一个简单的在线聊天功能

    万次阅读 多人点赞 2016-11-24 22:45:06
    一直很想试着做一做这有意思的功能,感觉复杂的不是数据交互和表结构,麻烦的是前端展..于是..需求分析要实现功能,首先要做前端,经过对比其他网站的在线聊天功能,发现除了基本的聊天功能以外,还要注意以下几点.1....
  • 如何开发一个自己的个人网站

    千次阅读 2014-08-15 17:22:22
    但你可能觉得没准备好,如果是这样,你不妨先动动手,做个简单的博客试试,注意是自己做一个,而不是安装一个wordpress。觉得简单是一回事,做出来是另一回事,不信动手试试。 1、选择你熟悉的框架 选择你最熟悉的...
  • 很多面试,很多人员能力要求都有“PHP高级工程师的字眼”,如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望给初级或已经达到中级的PHP工程师一些帮助。
  • 、在PHPcms V9管理后台设置手机门户 1.1、开启手机网站。位置:模块 》手机门户 》 添加手机站点,具体设置可参照截图: 填写站点名和LOGO文件相对位置,绑定用于手机网站的二级域名m.cmsyou.com,域名以...
  • 一个简单的PHP购物车系统

    万次阅读 多人点赞 2015-09-02 15:50:45
    1、需求分析  我们需要找到一种将数据库连接到用户的浏览器的方法。用户能够按目录浏览商品。 用户应该能够从商品目录中选取商品以便... 创建一个管理界面,以便管理员在上面添加、编辑图书和目录。 2、解决方案
  • 一个中高级PHP工程师所应该具备的能力 很多面试,很多人员能力要求都有“PHP高级工程师的字眼”,如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望给初级或已经达到中级...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 182,921
精华内容 73,168
关键字:

如何用php做一个网站