php,js部分语法 cookie session

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']">
v['child']" item="value">

  • {$value['name']}




  • 而最后都被解释为$v['child']

    $value): ?>
    
  • 又例:
    cate" item="v">

    
    

     

     


    又例:
    $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; }

     

     

     




    关于表单

     

     

     

     

    
    
    

    php,js部分语法 cookie session_第1张图片

    当点击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的话,可以申请一个免费的。关键步骤如下

     

     

     

     

     

     

    php,js部分语法 cookie session_第2张图片

    php,js部分语法 cookie session_第3张图片

    php,js部分语法 cookie session_第4张图片

    php,js部分语法 cookie session_第5张图片

     


    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 .(使用两个浏览器测试,有可能其中某一浏览器有缓存)

     

    你可能感兴趣的:(语言-javascript)