www.yzc577.comphp无法获取表单数据

( www.yzc577.com )

1.wamp搭建的环境,用post获取表单提交数据返回值为空
代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form action="test.php" method="post">
    Firstname: <input type="text" name="firstname" value="aaa" />
    Lastname: <input type="text" name="lastname" />
    Age: <input type="text" name="age" />
    <input type="submit" />
</form>
</body>
</html>
<?PHP
$firstname = $_POST["firstname"];
$lastname = $_POST["lastname"];
$age = $_POST["age"];
if$firstname==""{
  echo "<script>alertYour username is empty!;</script>";
}else{
  var_dump$firstname;
}
?>

报错:Notice: Undefined index: firstname in E:WebWeb SoftwarewampwwwDEMOtest.php

2.php服务器是阿帕奇没有错,端口号也是80没有错

3.试了get方法,依然得不到数据



我发现我自己的问题了:html文件没有从和php文件的同一路径打开~

确定几点问题!

1.本次测试的test1.htmltest.php两个文件均在同一级目录下DEMO
2.请不要使用file://路径访问你的PHP文件,这样PHP文件不会被安装在你电脑上的php.exe解释器解释。
3.请使用http://协议访问您的test1.html,并正确填入值提交表单到test.php
4.请注意你的PHP文件开头<?php 还是 <?PHP

确定好以上几点,看看问题是否还存在呢?

测试你的代码并没有问题

Firstname: <input type="text" name="firstname"value="aaa" />

改成

Firstname: <input type="text" name="firstname" value="aaa" />

试试 name 和 value 之间少了一个空格吧

好像没问题啊?

报错:Notice: Undefined index: firstname in E:WebWeb SoftwarewampwwwDEMOtest.php

此错误是一个Notice级的错误,可以忽略,它是想告诉你$firstname还没有被申明就已经在使用了。但是如果不希望它出现,有很多办法。比如修改php.ini中的php_error。

(看完/读完)这篇文章有何感想! www.yzc577.com的分享…

yzc577亚洲城娱乐数据库莫名多了些奇怪的代码,是被SQL注入了吗?

( yzc577亚洲城娱乐 )

今天早上起来的时候发现数据库多了好几百条莫名其妙的数据,有点像代码。我查了下日志,是这样访问网站的,如下:

第一条: /Home/Office/manage/include/downfile.php?gFileName=/etc/passwd

第二条: /office/door//ucenter/admin/export

第三题:/fun/module/AIP/get_file.php?MODULE=/&ATTACHMENT_NAME=php&ATTACHMENT_ID=.._webroot/inc/oa_config
等等。

我这是被SQL注入了吗?

这已经不仅仅局限于SQL注入的范围了,攻击者已经在测试你的文件系统级别的安全性了。

例如第一条的目的是拉取服务器系统中的用户信息。第三条是希望获取网站的配置信息。

运维已经被开除了

你把第一个地址访问下 没问题 那就没问题 ,楼上说的吓死人
这个一多半是扫描软件扫的

2 看你的服务器是什么运营商 并且记录访问ip。比如你是阿里云服务器 那就再正常不过了 ,他会尝试扫描你的网站是否存在漏洞,然后你登录阿里平台就可以看到 哪个地方可能存在漏洞。这也是他这个功能的实现

这就比较尴尬了

密码也不在/etc/passwd里啊

被攻击而已,如果你使用了框架的话,可能框架有些漏洞,比如织梦CMS和ThinkPHP,这种链接只是嗅探,如果请求成功,而且达到了请求者的目的,比如下载了敏感文件,那请求者就知道你的网站有漏洞,就可以进行下一步的入侵了。

有这种请求不要害怕,就像你装了一把锁,总会有人用不同的钥匙去试一样,建议你自己访问这种链接看看结果,查漏补缺

删了吧,当我没说。

(看完/读完)这篇文章有何感想! yzc577亚洲城娱乐的分享…

yzc577亚洲城娱乐php 在值中找字串

( yzc577亚洲城娱乐 )

每個用戶有一個欄位叫做skills
可能是 哈囉,你好,再見,不錯,太棒了 但每個人都不太一樣
我要如何找出該欄位的字元
若他的skills欄位有 太棒了 則顯示checked..類似這樣?

補充

<? $skills = $SQLROW[skills];?>
 <? foreach$t as $key=>$value{  ?>
     <input type="checkbox" name="skills_profile[]" id="profile<? echo $key;?>" value="<? echo $value;?>"
        <? ifstrpos$skills,$value
  {
   echo checked;
  }
   ?>>
        <label for="profile<? echo $key;?>"><? echo $value;?></label>
        <? } ?>

明明有哈囉,你好,再見,不錯,太棒了
但是他卻只有 你好,再見,不錯,太棒了 有checked?
這是哪裡有問題?

没太看懂你的意思,不知道这是不是你要的

<?php
$sys_arr = explode,,哈囉,你好,再見,不錯,太棒了;
$skills = explode,,你好,再見;
foreach$sys_arr as $v{
    $ck = in_array$v,$skills? checked:;
    echo "<input type=checkbox value={$v}{$ck}>{$v}
";
}

把你回复的代码中的 strpos$skills,$value 这个判断改成 ifstrpos$skills,$value !== false 因为可能匹配位置为 0 的 skills

首先你要知道strpos函数返回的是什么:

strpos 函数查找字符串在另一字符串中第一次出现的位置。
返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。
注释:字符串位置从 0 开始,不是从 1 开始。

因为你只是 ifstrpos$skills,$value 所以,你的 哈囉 位置在 0
你需要改成 当然也可以换成其他写法

ifstrpos$skills,$value !== false

参考连接:
http://www.w3school.com.cn/ph…

strops返回 needle 存在于 haystack 字符串起始的位置独立于 offset。同时注意字符串位置是从0开始,而不是从1开始的。
如果没找到 needle,将返回 FALSE。

判断语句改成 ifstrpos$skills,$value !== false

strops函数

写sql语句时 select id from table where skills like %太棒了%

(看完/读完)这篇文章有何感想! yzc577亚洲城娱乐的分享…

yzc577亚洲城娱乐求xampp中mysql启动失败解决方法,在线等(不删除ibdata1 文件)

( yzc577亚洲城娱乐 )

错误提示:
11:35:17 [mysql] Error: MySQL shutdown unexpectedly.
11:35:17 [mysql] This may be due to a blocked port, missing dependencies,
11:35:17 [mysql] improper privileges, a crash, or a shutdown by another method.
11:35:17 [mysql] Press the Logs button to view error logs and check
11:35:17 [mysql] the Windows Event Viewer for more clues
11:35:17 [mysql] If you need more help, copy and post this
11:35:17 [mysql] entire log window on the forums
自己找的解决方案:
1.找到本地磁盘D:存放xampp的文件夹,点击打开文件夹
2.找到Mysql文件夹,点击打开
3.找到data文件夹,点击打开
4.找到 ibdata1 这个文件,并删除它
但是这样做的话自己的数据表就丢失了,所以想着不删除ibdata1那个文件的话怎么解决这问题呢?温柔一点

去找MySQL的日志,看看启动失败的具体原因

或者根据你提供的这些一条一条的检查,看看那个不符合

(看完/读完)这篇文章有何感想! yzc577亚洲城娱乐的分享…

yzc577亚洲城娱乐博客系统数据库是怎么设计文章的数据结构的?

( yzc577亚洲城娱乐 )

我正在写一个单页博客应用,每篇文章的结构都不尽相同,各种一级二级标题。数据结构是如何设计的?

另外如果是后端把数据取出来拼接成html,这个逻辑能不能拿到前端做?有没必要?

可以用插件啊 比如UEditor 直接得到html部分 插入数据库

(看完/读完)这篇文章有何感想! yzc577亚洲城娱乐的分享…

yzc577亚洲城亚洲娱乐第一站mysql取模分表与分表

( yzc577亚洲城亚洲娱乐第一站 )

mysql取模分表还是没搞明白 假如三张表 是用什么数%3 那初次创建用户的这个数 假如用户注册了 第二次查询怎么还保证是这个数%3的值呢 求一个能看懂的解答

还有就是假如文章分表 我是根据什么依据分比较合适

用数据的唯一标识字段ID去模上你要分表的个数,文章分表也是一样。

我的猜想应该用户表和文章表的唯一标识应该是在插入数据之前生成号的,在根据对应要分表的基数求余数,然后在决定在那张表中添加数据。

不过我对那个数据表生成唯一标识的算法不知道怎么实现,比如电商平台中的订单id好像不是自动增长的,关于生成数据表唯一标识的算法,欢迎大神给我脑补脑补,感激不尽。

(看完/读完)这篇文章有何感想! yzc577亚洲城亚洲娱乐第一站的分享…

yzc577亚洲城娱乐php-fpm中能实现数据库长连接吗

( yzc577亚洲城娱乐 )

能实现在php-fpm子进程中保持一个数据库连接,让该进程中每个请求都复用这一个连接吗?

当然。不过这是有PHP扩展来控制的,对使用PHP编程者来说是半透明的。也就是说,我们能够在数据库扩展的操作中选择开启长连接,但是否使用长连接以及长连接是否真的能够保持到进程结束,这是有扩展以及其他因素来决定的。

参考 @有明 的答案。

补充:

往往事实并不是那么乐观,PHP中的数据库长连接基本等于废物一样,最好还是自己实现。比如依托各种中间件等。最简单的可以自己写个脚本开始长连接然后用ab进行并发测试看看mysqlshow processlist

可以,比如MySQL,详见.

(看完/读完)这篇文章有何感想! yzc577亚洲城娱乐的分享…

yzc577亚洲城娱乐Mysql取下一条记录

( yzc577亚洲城娱乐 )

Mysql 有主键 但由于删除记录过多是散乱的比如10 15 16 20 22 50 61 我如何进行下一页操作 所在页是get Id

这样?取当前比id大的当中最小的一条 比当前id小的当中最大的一条

$id = $_GET[id];
where id>$id order by id asc limit 1

where id<$id order by id desc limit 1

就像之前的答主一样,总体思路就是比较id值,充分利用好limit这个语法。
http://dev.mysql.com/doc/refm…
http://www.w3schools.com/php/…

(看完/读完)这篇文章有何感想! yzc577亚洲城娱乐的分享…

yzc577亚洲城娱乐请问分库分表后如何通过非分库分表关键字查询记录?

( yzc577亚洲城娱乐 )

1、订单表分库分表过了,分库分表是以create_day来分的,这个create_day为日期yyyyMMdd的格式的整型数据。就叫他日订单表
2、为了可以通过store_id来查到订单,建了一张完全冗余的表与日订单表完全相同,只不过是以store_id做分库分表的。就叫他店铺订单表
3、又为了可以通过agent_id来查询订单,又建了一张冗余表,是以agent_id来分的,就叫他代理商订单表

分库分表的算法大致就是先hash再取余要分库分表的数,前两张表还好,代理商订单表中,每个代理商的订单量很大,很快就要达到瓶颈。

想请教一下,有没有好的方法,不必每个查询维度就要加一张冗余表。只要一张表分库分表,可以通过非分库分表关键字查询记录。

目前想到方法就是用elasticsearch

请教了一些人,说是要做数据仓库,我不太清楚数据仓库的含义以及有哪些可以实现技术,望大神赐教。。。

(看完/读完)这篇文章有何感想! yzc577亚洲城娱乐的分享…

yzc577亚洲城亚洲娱乐第一站深入探讨,用户注册和登录安全问题,MySQL表的设计

( yzc577亚洲城亚洲娱乐第一站 )

大家可以说一下,如何提高用户信息的安全性呢?
登录,注册信息一般怎么安全的保存在Mysql中呢?

后台:

  • PHP的密码专用加密函数是:password_hash,验证是否正确:password_verify

  • MD5/SHA1 在PHP都是很过时的密码加密算法了

  • 使用password_hash得到的运算结果是有salt的,即使密码一样,每次密文都是不一样的,这样避免了数据库暴库。

  • 至少在目前来说,password_hash 的 cost = 10(默认),暴力破解不太可能

登录:

  • 登录除了HTTPS、或者ActiveX等浏览器插件做的密码输入框银行常用,无安全方法

  • HTTP的任何请求,都是明文传输,包括密码

  • 多么复杂的「验证码」都可以攻破,除非:12306

  • 比如:Discuz!等登录FORM表单,在submit之前会将密码MD5一下之后,再POST传输给后台

  • 但这只能在一定程度上面解决密码非明文的问题,中间人照样可以去暴力破解MD5

  • 当JS运行失败时,Discuz!并没有MD5密码就POST过去了(所以?)

Cookie:

  • Cookie里面不要记录任何形态的密码,这是绝对不安全的

  • set-cookie时使用httponly来拒绝Javascript对敏感信息的访问

  • 登录态必须使用Session来处理

  • 我看到楼主的问题标签中有Laravel,它的用户验证、保存登录机制可以好好学习一下,非常的优秀。

安全

  • SSL 加密是目前最安全的传输协议,可以预防中间人的攻击(前提是你的根证书是由国际知名CA颁发)

  • 但是也抵挡不住 键盘记录仪、木马。因为获得了电脑的控制权,我们还谈个鬼?

  • ActiveX/浏览器Plugins的 密码框 可以在一定程度上抵挡键盘记录

  • QQ客户端的密码输入框,使用键盘记录仪都读取不到密码,具体如何实现涉及到Ring0等操作系统内核

看到深入探讨这几个字我进来了,然而看到问题时,就有点尴尬了…然而我也只懂一些些基本的

首先说,注册,注册的时候提交方式可以用from也可以用ajax,请求类型一般为post,post相对来说比get要安全些,用户名,生日等信息保存铭文,密码等重要的要加密(php中一般用md5),采用密码+token的方式进行加密。

登陆的时候,加验证,比如现在流行的验证码、手机验证码等,其中验证码的复杂性也可以掌控,最简单的就是数字验证了,复杂的图文等;然后就是登陆密码了,登陆密码最好是在前端用算法加密后再去后端,与用户密码匹配了。

大概就是这样了手机码的,排版不好看,请谅解~

以前还参加过csdn的三天活动, 后来出了csdn密码明文的事, 再没看过. 还能再low点吗?

加密这一块,不要单纯的采用MD5和SHA1,目前已经破解了8位以下字符串MD5加密后的值,其实MD5和SHA1混合加密也不安全,安全的做法是数据库中保留一个salt字段(通常来说就是加盐),盐值长度为32位,用户修改密码的时候改变盐值,这样采用MD5和SHA1和加盐方式进行加密,如SHA1MD5$pass.$salt.$salt;具体看你怎么做吧

基于数据库实现一套自定义的cookie会话机制
这个cookie既要做到认证用户,又要做到不能被伪造和破解.

//保护用户密码的盐
$salt = sha1uniqid$user_id._.getmypid._.mt_rand._, true;

//数据库保存的用户密码$pwd_user是用户输入的密码明文
//可以先在浏览器端使用CryptoJS.MD5哈希密码后传给服务器处理,
//保证服务器对用户密码明文的不知情,最好使用https加密传输避免被窃听和修改.
$pwd_db = sha1$salt.sha1$pwd_user;
//password_hash返回值包含盐,这时不需要外部$salt参与.
//password_verify可实现耗时恒定的字符串比较避免时序攻击.
//$pwd_db = password_hash$pwd_user, PASSWORD_DEFAULT;

//cookie里的盐
//其中$global_salt是配置里定义的全局盐,用来保护用户的盐,一旦修改,所有用户的cookie都将失效.
$cookie_salt = sha1$global_salt.sha1$salt;

//最终生成的cookie内容
$cookie = base64_encode$user_id.|.$cookie_salt;
//如果你需要高安全性,还可以使用MCRYPT_BLOWFISH对整个cookie的内容做一次加密.
//$cookie = mcrypt_blowfish$cookie, $key;

//设置cookie,这里把过期时间设为604800秒60*60*24*7,一周
setcookiesessid, $cookie, time+604800, /, , false, true;

//解密cookie
//$cookie = mdecrypt_blowfish$_COOKIE[sessid], $key;

//解码分割后拿到里面的$user_id和$cookie_salt
//根据$user_id查询$salt拼出$cookie_salt,然后跟cookie里的$cookie_salt做对比,一致则通过cookie认证.
$cookie = explode|, base64_decode$_COOKIE[sessid];
$user_id     = $cookie[0];
$cookie_salt = $cookie[1];

用MySQL内存表实现会话存储

CREATE TABLE sessions 
    user_id int10 unsigned NOT NULL,
    session text NOT NULL,
    md5 char32 NOT NULL,
    PRIMARY KEY user_id
 ENGINE=MEMORY DEFAULT CHARSET=utf8;

其中:
user_id存储的是用户ID,作为主键.
session存储的是用户的会话数组经过serialize或json_encode后的字符串.
md5存储的是session字段的MD5值,用于实现Check And Set版本号乐观锁:

--读取会话
SELECT session, md5 --写入会话时需要用到这里查出来的md5,就是下面的$last_md5
FROM sessions WHERE user_id = $user_id
--写入会话
UPDATE sessions
SET session = $str, md5 = md5$str
WHERE user_id = $user_id 
AND md5 = $last_md5 --检查MD5,确保session字段没有被修改过

(看完/读完)这篇文章有何感想! yzc577亚洲城亚洲娱乐第一站的分享…