起源于要整理通讯录,原先用的是文件调查,现在学了php,就自己试一下.
程序短小精悍,适于学习.
有两个文件,bj.html用于显示和采集表单信息.bj.php用于处理数据和反馈结果.
突出之处在于可以上传阅览头像.
其实还有一个test.php,用于调试,中间处理.从这个开始先看.
注释很详细,标签,函数不会的话右键搜索.
因为web目录很多,放在./1/文件夹下,在火狐设一个书签方便访问
部署时吧bj.html改成index.php

原先想着搭建一个ipv6免费上网的应用平台(现在知道了是oauth开放平台),就开始学php,php是最简单的了,可也学了一年才有第一个程序,慎入!
​1. [文件] bj.html ~ 2KB    
<!-- 原先想着搭建一个ipv6免费上网的应用平台,就开始学php,php是最简单的了,可也学了一年才有第一个程序,慎入! -->
 
<!-- 这里尽量简洁的代码,全都是键入的.没有多余
使用了一些html5功能,没有用日期,电话等功能,没必要,而且输入麻烦,tel标签还没内容. -->
 
<!doctype html><!-- html5 声明 chrome较好 -->
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=utf-8">
<title>2014年通讯录</title>
</head>
 
<body>
<h3>2014年通讯录</h3>
    <form enctype="multipart/form-data" action='bj.php' method="post"><!-- 必填 -->
        姓名<input type="text" name="name"  /> 
        小名<input type="text" name="nickname"  /><br>
        性别<input type="text" name="gender" placeholder="男/女" /> 
        生日<input type="text" name="birthday"  placeholder="比如:1995-5-5"/><p><!-- html5 新标签 -->
 
        电话<input type="number" name="phone" /> 
        qq    &nbsp;<input type="number" name="qq"  /><!-- 就单个页面来说,手动调一下就行了 -->
        email<input type="email" name="email" /> 
        老家<input type="text" name="home" placeholder="比如:板岩中学" /><p>
 
        学校<input type="text" name="college" /> 
        年级<input type="text" name="grade"  placeholder="比如:本科2013级"/>
        专业<input type="text" name="major" /> <br>
        公司<input type="text" name="company"  />
        职务<input type="text" name="position" /> 
        地址<input type="text" name="address"  />
<p><!-- 本来要填账号,为了方便点击和输入,使用url -->
        微博主页    &nbsp; <input type="url" name="weibolink" size=70 placeholder="比如:http://weibo.com/2025922571/profile下同" /> <br>
       人人主页     &nbsp;&nbsp;<input type="url" name="renrenlink" size=70  /><br>
        qq空间主页 <input type="url" name="qqzonelink" size=70 /> <br>
<p></p><!-- 特色功能,有图有真相,还有个简介做备注 -->
        头像<input type="file" name="photo"  /><p>
        简介<textarea name="profile" > </textarea><p>
        <input type="submit" name="submit" value="ok!"  />
 
    </form>
</body>
</html>
 
<!-- laohur@gmail.com以防联系 -->
2. [文件] bj.php ~ 3KB  
<meta http-equiv="Content-type" content="script/php;charset=utf-8">
<?php
//保存图片文件
@header('Content-type: text/html;charset=UTF-8');<!-- 声明编码 -->
 
//上传图片
$filepath=$_FILES["photo"]["tmp_name"];
$filename=explode('.',$_FILES['photo']['name']);
$filename[0]=$_POST['name'];
$name=implode('.',$filename);
 
$uploaded="./photos/".$name;
if(file_exists($filepath)){
    move_uploaded_file($filepath,$uploaded);
    //图片链接插入数据库,方便点击和下载查看,没必要吧图片本身上传到数据库,编码还解码,
    $_POST['photo']="http://localhost/1/c/photos/".$name;
    echo "<br>hello,<br>".$_POST["name"]."!<br><img src='".$uploaded."' <p>";//返回成功信息,而且是自己的头像
 
}
 
<!-- 这个字符串是最初开始有的,设计时键入的. 然后在后面以数组形式插入数据库时,中间经过了很多次在test.php上实验,从$arr到$arr5,中间不停滴var_dump($arr),最终挑了一个.没必要吧处理脚本笑出来.我费了好大劲,发现太麻烦了,而这也是一个中间件过程,没必要,只要有结果就好,本地手动处理完毕就好,中间怎么处理的,办法就很多了 -->
 
$arr1="name,nickname,gender,birthday,phone,qq,email,home,college,grade,major,company,position,address,weibolink,renrenlink,qqzonelink,photo,profile";
 
//没想好怎么防止sql注入,就用pdo_prepare
 
$db=new PDO("mysql:host=localhost;dbname=test","root","") or die(print_r($db->errorInfo(),true));
 
//下面是尝试的代码,因为mysql乱码,试了下这个,最终不行.只好换了mariadb,整个世界就清净了.可以删掉,用以参考.
    mysqli_query("set names ’utf8’ "); 
    mysqli_query("set character_set_client=utf8"); 
    mysqli_query("set character_set_results=utf8"); 
 
//这是唯一一个自动处理脚本,最初想着把运算都放在这里其实这个是变量静态的,被当地处理完毕再放上来未尝不可,因为简单,实现了,本地把 '?'.'?,'*18 的结果贴出来就可以了.
$s="?";
for($j=0;$j<18;$j++){
    $s.=",?";
}
 
$add="insert into bj ({$arr1}) values ({$s})";
$q=$stmt=$db->prepare($add);
 
//这个就是本地吧文本处理完毕再放上来,看着很难输入,中间也出错了很多次,
 
$array=array($_POST["name"],$_POST["nickname"],$_POST["gender"],$_POST["birthday"],$_POST["phone"],$_POST["qq"],$_POST["email"],$_POST["home"],$_POST["college"],$_POST["grade"],$_POST["major"],$_POST["company"],$_POST["position"],$_POST["address"],$_POST["weibolink"],$_POST["renrenlink"],$_POST["qqzonelink"],$_POST["photo"],$_POST["profile"]);
$stmt->execute($array);
 
?>
 
<!-- laohur@gmail.com方便联系 -->
3. [文件] test.php ~ 6KB    
<!-- 
bj.html 用于显示和填写表单
bj.php用于处理表单
test.php 用于调试,中间处理.  以及说明
 
html.javascript.css因为各自表现不同而分开,各自负责内容,动态,美观.
mvc也一样,model负责数据处理,数据库,view负责展示,config负责把他们组织起来.
 
bj.html和bj.php分工也一样,一个输入表单,一个处理
 
 
 
环境:用xmpp或者lamp,adminer.phpmyadmin和mysql不好支持utf8,改为mariadb和adminer.
adminer可视化建表.用它导出来语句是
 
SET NAMES utf8;
SET foreign_key_checks = 0;
SET time_zone = '+00:00';
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
 
DROP TABLE IF EXISTS `bj`;
CREATE TABLE `bj` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
  `nickname` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `gender` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL,
  `birthday` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `phone` int(20) DEFAULT NULL,
  `qq` int(20) DEFAULT NULL,
  `email` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
  `home` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `college` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `grade` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
  `major` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `company` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
  `position` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `address` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `weibolink` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `renrenlink` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `qqzonelink` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `photo` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `profile` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 
 
将上文粘贴到adminer,sql语句执行.排序用utf8_unicode_ci.mysql怎么弄也是乱码,phpmyadmin也是,只好换掉.
 
按照https://downloads.mariadb.org/mariadb/repositories/#distro=Debian&distro_release=wheezy&version=10.0&mirror=yamagata-university 把mysql换成mariadb,数据不变.
adminer更简单,也安全.下载adminer.php放上去就可以了.
 
sudo apt-get install python-software-properties sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db sudo add-apt-repository 'deb http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.0/debian wheezy main'
 http://www.huiyi8.com/hunsha/lifu/​
Once the key is imported and the repository added you can install MariaDB with:
 婚纱礼服欣赏
sudo apt-get update sudo apt-get install mariadb-server
 
在test.php中调试时,每一个变量前后都使用了
 
echo "<br>".'$arr:'."<br>";
var_dump($arr2);
 
类似的语句
 
还有一些字符串处理等中间工作也是在这里完成的.
中间处理在本地处理好之后把结果放上去就好了,不用上传过程.
 
这里每一句都花了不少的心血.
 
独立程序,编写时不会的上网查函数,不要抄袭已有成果.
 
-->
 
 
 
<?php
 
 
$arr1="name,nickname,gender,birthday,phone,qq,email,home,college,grade,major,company,position,address,weibolink,renrenlink,qqzonelink,profile";
 
$arr2=explode(",",$arr1);
echo "<br>".'$arr2'."<br>";
 
for($i=0;$i<count($arr2);$i++){
    $arr3[$i]='"$_POST[\''.$arr2[$i].'\']"';
}
echo "<br>".'$arr3'."<br>";
echo $arr3;
$arr4=implode(",",$arr3);
//'$_POST['name']','$_POST['nickname']','$_POST['gender']','$_POST['birthday']','$_POST['phone']','$_POST['qq']','$_POST['email']','$_POST['home']',........
echo "<br>".'$arr4'."<br>";
echo $arr4;
$arr5="'".$arr4."'";
echo "<br>".'$arr5'."<br>";
echo $arr5;
 
$db=new PDO("mysql:host=localhost;dbname=test","root","");
//$r1=$db->exec("insert into bj(name,nickname,gender,birthday,phone,qq,email,home,college,grade,major,company,position,address,weibolink,renrenlink,qqzonelink,profile) values ($arr3)");
echo '$db:';
 
$insert="insert into bj({$arr1}) values ({$arr4})";
echo "<br>".'$insert:'."<br>";
 
 
$s="?";
for($j=0;$j<18;$j++){
    $s.=",?";
}
 
$add="insert into bj ({$arr1}) values ($s)";
$stmt=$db->prepare($add);
$stmt->execute(array($arr4));
 
?>
 
$sql = " insert into `tbl` values(' " . $_POST['name'] .  " ', ' " . $_POST['title'] . " ' )";
$sql = " insert into `tbl` values('{$_POST['name']}', '{$_POST['title']}')"
 
'INSERT INTO '.$table.' ('.$cols.') VALUES ('.$vals.')');
 
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}
 
$array=("{$_POST['name']}","{$_POST['nickname']}","{$_POST['gender']}","{$_POST['birthday']}","{$_POST['phone']}","{$_POST['qq']}","{$_POST['email']}","{$_POST['home']}","{$_POST['college']}","{$_POST['grade']}","{$_POST['major']}","{$_POST['company']}","{$_POST['position']}","{$_POST['address']}","{$_POST['weibolink']}","{$_POST['renrenlink']}","{$_POST['qqzonelink']}","{$_POST['profile']}");
 
"$_POST['name']","$_POST['nickname']","$_POST['gender']","$_POST['birthday']","$_POST['phone']","$_POST['qq']","$_POST['email']","$_POST['home']","$_POST['college']","$_POST['grade']","$_POST['major']","$_POST['company']","$_POST['position']","$_POST['address']","$_POST['weibolink']","$_POST['renrenlink']","$_POST['qqzonelink']","$_POST['profile']"
$arr5
'"$_POST['name']","$_POST['nickname']","$_POST['gender']","$_POST['birthday']","$_POST['phone']","$_POST['qq']","$_POST['email']","$_POST['home']","$_POST['college']","$_POST['grade']","$_POST['major']","$_POST['company']","$_POST['position']","$_POST['address']","$_POST['weibolink']","$_POST['renrenlink']","$_POST['qqzonelink']","$_POST['profile']"'$db:
$insert:
 
<!-- laohur@gmail.com谨防联系 -->

php简单实现通讯录采集,我的第一个php,适合新手的更多相关文章

  1. C语言简单实现链栈基本几个功能(适合新手看,大神可指正)

            接着上一次的顺序栈,今天我记一下链栈,因为我也是刚学不久,有些地方也稍稍理解不了,所以,一起共勉.我会用我自己结合教材上画的图,争取跟代码一起结合,用文字和图最大化的解释代码,这样的话 ...

  2. Python初学者笔记(4)-简单的通讯录

    要求: 编写一个简单的通讯录 1.通讯录包含至少包含姓名.电话号码.电子邮箱:2.通讯录的信息能够保存在本地磁盘:3.通讯录查找特定人员的信息:4.通讯录能够修改特定人员的信息:5.通讯录能够删除特定 ...

  3. 简单的网页采集程序(ASP.NET MVC4)

    因为懒人太多,造成现在网页数据采集非常的流行,我也来写个简单的记录一下. 之前写了MVC的基本框架的搭建随笔,后面因为公司太忙,个人感情问题:(,导致不想写了,就写了两篇给删除了,现在就搁浅了, 本人 ...

  4. 简单的java采集程序二

    继[简单的java采集程序],这里将完成对整个网站的号码段的采集任务. [使用预编译+批处理采集网页内容至数据库表中]          在之前我们用statement类来创建sql语句的执行对象,以 ...

  5. 完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能

    #!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能'''try: a=int(raw_input(" ...

  6. WPF 3D:简单的Point3D和Vector3D动画创造一个旋转的正方体

    原文:WPF 3D:简单的Point3D和Vector3D动画创造一个旋转的正方体 运行结果: 事实上很简单,定义好一个正方体,处理好纹理.关于MeshGeometry3D的正确定义和纹理这里就不多讲 ...

  7. 关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手

    关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手   本人菜鸟一枚,最近公司有需求要用到富文本编辑器,我选择的是百度的ueditor富文本编辑器,闲话不多说,进入正 ...

  8. 【Android Demo】简单手机通讯录

    Android 系统给我们提供了访问通讯录的接口,通过接口获取通讯录信息.Adapter 与 View 的连接主要依靠 getView 这个方法返回我们需要的自定义 view. ListView 是 ...

  9. iOS学习之Object-C语言简单的通讯录管理系统

    用这几天学的OC的知识,写了一个实现简单功能的通讯录管理系统,在这里分享给大家: 通讯录管理系统 *  需求: 1.定义联系人类Contact.实例变量:姓名(拼音,首字母大写).性别.电话号码.住址 ...

随机推荐

  1. LinkedList add remove get 代码分析

    add void linkLast(E e) { //e 要添加的元素 final Node<E> l = last; // 最后一个元素 final Node<E> newN ...

  2. 查看Android源码和源码布局

    一.查看源码 1.https://github.com/android 2.http://grepcode.com/project/repository.grepcode.com/java/ext/c ...

  3. 【JMeter4.0学习(八)】之断言

    目录 响应断言 一.响应断言 1.添加线程组 2.添加HTTP请求默认值 3.添加HTTP请求1 4.先运行“HTTP请求1”,查看结果树的“取样器结果.请求.响应数据” ①取样器结果 ②请求 ③响应 ...

  4. 嵌套SQL语句訪问DB2中SQLCA的调用技巧

    在IBM的关系型数据库产品DB2中,使用SQL Communication Area(SQLCA)将程序中嵌套的SQL语句执行情况返回给程序. 在程序中有针对性地对SQLCA实施调用,可对程序中各类S ...

  5. poj1066(叉乘的简单应用)

    做完了才发现,好像没有人和我的做法一样的,不过我怎么都觉得我的做法还是挺容易想的. 我的做法是: 把周围的方框按顺时针编号,然后对于每一条边,如果点出现在边的一侧,则把另一侧所有的点加1,这样最后统计 ...

  6. JS获取图片的缩略图,并且动态的加载多张图片

    找了好多资料也没有找到该死的ie的解决办法,最后放弃了ie <!DOCTYPE html> <html> <head> <meta charset=" ...

  7. EasyNVR无插件直播服务器播放页面的集成----单独的播放器样式

    背景需求: EasyNVR自身拥有独立的客户端体系,安卓和IOS拥有各自独立的APP, 安卓下载地址:https://fir.im/EasyNVR: IOS下载可直接在APPstore搜索EasyNV ...

  8. 自动更新GeoIP数据库

    #!/bin/bash if [ ! -d /usr/local/share/GeoIP ];then mkdir /usr/local/share/GeoIP fi if [ ! -d /usr/l ...

  9. CoreMotion 加速器陀螺仪

    初始化CoreMotion #import <CoreMotion/CoreMotion.h> CMMotionManager *motionManager = [[CMMotionMan ...

  10. 【python】-- 类的反射

    反射 反射我们以后会经常用到,这个东西实现了动态的装配,通过字符串来反射类中的属性和方法 一.反射函数 1.hasarttr(obj,name_str) 作用:判断一个对象obj中是否有对应的name ...