js传递值给php,直接在php中写js代码document.write输出给php即可。比如把js的aa值付给php的b
document.write(aa);";
echo $b
?>
php传递值给js,直接在js中写php代码echo给js即可。比如把php的b值付给js的aa
php传递array给js
"Eric","age" => 23);
$result = json_encode($array);
echo $result;
?>
xxxxx
thinkphp中模板文件中获取对应控制器的变量 ,需要现在php控制器文件中assign一下给一个变量xx,然后在对应的模板文件中使用{$x}来获取
http://doc.thinkphp.cn/manual/var_output.html
比如
在控制器文件IndexAction.php.class的indexAction方法中
xxxx
$xx= 'ThinkPHP';$this->assign('xx',$name);
或
$this->xx = $name;
php中定义了一个数组(对象),比如data1['name'] = 'song';
在当前php文件中需用下标访问:data1['name']
在模板文件html中可以用原生php访问:
在模板文件html中可以用模板替换语法访问:分两种 下标 {$data1[name]}或点语法 {$data1.name} ( 模板编译后的结果就是 )
所以可以统一用数组方式访问
但thinkphp自己定义的标签还是有些乱,有的需要加$,有的不需要
而最后都被解释为$v['child']:
$value): ?>
又例:
又例:
$value['id']))}">{$value['title']}
php和js对象和数组比较:php
//1.字符串索引的数组(或叫关联数组,对象,字典,map)
$price =array('oil'=>10,'rice'=>20);//定义一个数组
p($price);
echo "使用字符串下标访问:".$price['oil'];
echo("\n");
echo "不能使用数字下标访问:".$price[0];
echo("\n");
echo "不能使用点符号访问:".$price.oil;
$price['apple']=30;///追加元素
echo("\n");
echo "使用 foreach 遍历数组:\n";//as后的第一个变量代表下表标识,第二个变量代表对应的元素值
foreach($price as $k=>$v){
echo $k."=>".$v . ",";
}
echo("\n\n");
//2.数字索引的数组(或叫普通数组)
$tsetarr = array();//定义一个空数组
$tsetarr[]='abc';//追加元素
$tsetarr[]='def';//追加元素
p($tsetarr);
echo "可以使用数字下标访问:".$tsetarr[0];
echo("\n");
echo("\n");
echo "使用 foreach 遍历数组:\n";
foreach($tsetarr as $v){
echo $v;
}
打印如下
Array
(
[oil] => 10
[rice] => 20
)
使用字符串下标访问:10
不能使用数字下标访问:
不能使用点符号访问:Arrayoil
使用 foreach 遍历数组:
oil=>10,rice=>20,apple=>30,
Array
(
[0] => abc
[1] => def
)
可以使用数字下标访问:abc
使用 foreach 遍历数组:
abcdef
js
//1.字符串索引的数组(或叫关联数组,对象,字典,map)
var price ={oil:10,rice:20};//定义一个对象,var price={}定义一个空对象
console.log("可以使用字符串下标访问:"+price['oil']);
console.log("可以使用点符号访问:"+price.oil);
console.log("不能使用数字下标访问:"+price[0]);
price['apple']=30;//追加元素
console.log("使用 for in 遍历:");//使用 for in遍历所有属性,k代表key,
for(var k in price){
console.log(k+":"+price[k]);
}
console.log("\n");
//2.数字索引的数组(或叫普通数组)
var tsetarr = []; //定义一个空数组
tsetarr[0]='abc';//追加元素
tsetarr.push('def');//追加元素
console.log(tsetarr);
console.log("可以使用数字下标访问:"+tsetarr[0]);
console.log("使用 for in 遍历:"); //使用 for in遍历所有属性,k代表key,
for(var k in tsetarr){
console.log(k+":"+tsetarr[k]);
}
打印
可以使用字符串下标访问:10
可以使用点符号访问:10
不能使用数字下标访问:undefined
使用 for in 遍历:
oil:10
rice:20
apple:30
["abc", "def"]
可以使用数字下标访问:abc
使用 for in 遍历:
0:abc
1:def
中文乱码解决:使用utf-81.mysql创建表的时候需要指定utf-82.php读取时使用set_charset指定utf-8比如
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (!$conn->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $conn->error);
} else {
printf("Current character set: %s\r\n", $conn->character_set_name());
}
$sql = "SELECT DevId, Title, Content FROM 3518_Status";
$result = $conn->query($sql);
3.在html页面指定浏览器使用utf-8解析页面
4.使用编辑工具编辑完网页时,指定utf-8方式。比如ue
js和css的使用:
1.
使用内联js,在<>内部的各个事件内直接写js代码
aaaa
使用内联css:在<>内使用style属性
aaaa
2.
使用内部js
点击这里
使用内部css
Hello World!
3.
使用外部js
a.php的内容,位于根目录下
map
b.js的内容,位于根目录下
function changemode()
{
alert("dd");
}
使用外部css
a.php的内容:
Hello World!
style.css的内容,位于根目录下
#para1
{
text-align:center;
color:red;
}
关于表单
当点击submit按钮时,浏览器会自动把定义在form标签里的所有input对象都传输出去 ,如下:
http://127.0.0.1/index2.html?wenbenyu1=wenbenyu1_test&wenbenquyu1=wenbenquyu1_test&submit1=submit
而定义在form外部的wenbenquyu2不会被传出去
html中的节点,onclick事件(οnclick="js代码")等的概念属于html
javascript通过dom(文档对象模型)来访问任何一个html节点,以便动态改变页面
cookie的传输:cookie在http头里面传输
http方式:以访问http://www.webryan.net/index.php为例
Step1.客户端发起http请求到Server
GET /index.php HTTP/1.1
Host: www.webryan.net
(这里是省去了User-Agent,Accept等字段)
Step2. 服务器返回http response,其中可以包含Cookie设置
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value
Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT
(content of page)
Step3. 后续访问webryan.net的相关页面
GET /spec.html HTTP/1.1
Host: www.webryan.net
Cookie: name=value; name2=value2
Accept: */*
在php中使用setcookie函数来设置cookie: setcookie("user", "song", time()+3600); 此时会生成Set-Cookie: user=song放在http头部传给浏览器
而只要当前网站有cookie记录存在,访问server时,浏览器就会把cookie值放在http头部传给server,在你server上运行的php代码可以通过_SESSION('user')获得user值
chrome浏览器查看cookie:
在页面右键,选择查看页面信息
session
session存在servers上面,在php.ini中可以配置session文件的路径
session.save_path="C:\xampp\tmp"
Session储存于服务器端(默认以文件方式存储session),根据客户端提供的session id来得到用户的文件,取得变量的值,session id可以使用客户端的Cookie或者Http1.1协议的Query_String(就是访问的URL的「?」后面的部分)来传送给服务器,然后服务器读取Session的目录……。
也就是说,session id是取得存储在服务上的session变量的身份证。
当代码session_start();运行的时候,就在服务器上产生了一个session文件,随之也产生了与之唯一对应的一个session id,定义session变量以一定形式存储在刚才产生的session文件中。通过session id,可以取出定义的变量。
跨页后,为了使用session,你必须又执行session_start();将又会产生一个session文件,与之对应产生相应的session id,用这个session id是取不出前面提到的第一个session文件中的变量的,因为这个session id不是打开它的「钥匙」。
如果在session_start();之前加代码session_id($session id);将不产生新的session文件,直接读取与这个id对应的session文件。
PHP中的session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的cookie出现问题的时候就会影响session了。
必须注意的是:session不一定必须依赖cookie,这也是session相比cookie的高明之处。
当客户端的Cookie被禁用或出现问题时,PHP会自动把session id附着在URL中,这样再通过session id就能跨页使用session变量了。但这种附着也是有一定条件的,即「php.ini中的session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项」。
jquery ajax
在html中
在IndexController.php中的getcate函数
public function getcate(){
// IF(!IS_AJAX) _404('页面不存在');
$cate = M('cate')->order('sort')->select();
$cate = Category::unLimitedForLevel($cate);
$res = Category::getChilds2($cate,$_POST['pid']);
$this->ajaxReturn($res,'json');
}
css的position属性
http://blog.csdn.net/chen_zw/article/details/8741365
测试
具有static属性的div没有top left属性
具有relative属性的div需要加入top left属性
具有absolute属性的div不计入文档流,并且需要加入top=0 left=0属性
test red
test1 green
test2 yellow
test3 gray
设置thinkphp支持https访问
1.需要申请一个第三方机构颁发的证书,放置在网站特定目录下面。如果是阿里云ecs的话,可以申请一个免费的。关键步骤如下
2.在nginx的conf目录下创建cert目录,把下载的证书pem和key文件放到cert里面
编辑nginx.conf文件,添加ssl端口的监听(https端口)
server {
listen 443 ssl default_server;
#listen [::]:443 ssl default_server;
#listen 443;
server_name www.abc.net abc.net ;
ssl on;
#root html;
root "/phpstudy/www/sserver";
index index.php index.html index.htm;
ssl_certificate cert/214319931230763.pem;
ssl_certificate_key cert/214319931230763.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
#root html;
root "/phpstudy/www/sserver";
index index.php index.html index.htm;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
重启nginx,360或火狐浏览器访问 https://www.abc.net .(使用两个浏览器测试,有可能其中某一浏览器有缓存)