我一直在注册系统上工作,现在正在做注册部分,但是我不断收到诸如“用户名”之类的错误,不能为null或数据库字段中的其他错误。
在进行一些调试之后,我发现如果我尝试显示参数,则可以通过函数调用该函数。
函数调用:
$newUser->registerNewUser($_POST);
为了调试,我创建了一个称为dnd的基本功能
function dnd($data) //debug function
{
echo '<pre>';
var_dump($data);
echo '</pre>';
die();
}
然后,我们有了注册新用户功能
public function registerNewUser($params)
{
$this->assign($params);
dnd($params);
$this->deleted = 0;
$this->password = password_hash($this->password, PASSWORD_DEFAULT);
$this->save();
}
dnd($ params)向我返回:
array(6) {
["fname"]=>
string(8) "Fnamegood"
["lname"]=>
string(9) "Lnamegood"
["email"]=>
string(18) "email@gmail.com"
["username"]=>
string(8) "infernus"
["password"]=>
string(7) "workingpassword"
["confirm"]=>
string(7) "workingpassword"
}
在分配之后,该数组为空。
分配前:
object(Users)#13 (16) {
["_isLoggedIn":"Users":private]=>
NULL
["_sessionName":"Users":private]=>
string(21) "GJdsadaHsdahgFGDasdaS"
["_cookieName":"Users":private]=>
string(24) "nfbfbfafusibfsau548a484f"
["id"]=>
NULL
["username"]=>
NULL
["email"]=>
NULL
["password"]=>
NULL
["fname"]=>
NULL
["lname"]=>
NULL
["acl"]=>
NULL
["deleted"]=>
NULL
etc ..
分配后,它看起来像
object(Users)#13 (17) {
["_isLoggedIn":"Users":private]=>
NULL
["_sessionName":"Users":private]=>
string(21) "GJdsadaHsdahgFGDasdaS"
["_cookieName":"Users":private]=>
string(24) "nfbfbfafusibfsau548a484f"
["id"]=>
NULL
["username"]=>
NULL
["email"]=>
NULL
["password"]=>
NULL
["fname"]=>
NULL
["lname"]=>
NULL
["acl"]=>
NULL
["deleted"]=>
NULL
etc..
分配函数看起来像
public function assign ($params)
{
if(!empty($params))
{
foreach ($params as $key => $val)
{
if(in_array($key, $this->_columnNames))
{
$this->key = sanitize($val);
}
}
return true;
}
return false;
}
然后消毒
function sanitize($dirty)
{
return htmlentities($dirty, ENT_QUOTES , 'UTF-8');
}
答案 0 :(得分:2)
分配功能出错 应该是这样
public function assign($params)
{
if(!empty($params)) {
foreach($params as $key => $val) {
if(property_exists($this,$key)){
$this->$key = sanitize($val);
}
}
return true;
}
return false;
}
答案 1 :(得分:0)
您需要在$ this-> key行中读取$ this-> $ key
假设$ this-> _ columnNames存在并且具有值等...
答案 2 :(得分:0)
如果$ params是带有'is_array'函数的数组,则可以检查。
import ...
public class MainClient {
private Socket serverSock;
private PrintStream clientOutput;
public static void main(String[] args) {
MainClient client = new MainClient();
client.runClient();
}
public void runClient() {
try {
serverSock = new Socket("127.0.0.1",8282);
clientOutput = new PrintStream(serverSock.getOutputStream());
clientOutput.println("Hello, I'm Connected.");
for (int i=0;i<5;i++) {
clientOutput.println(i + "");
clientOutput.flush();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
// try {
// serverSock.close(); It will keeps sending 'null' data to the server if I use this line.
// } catch (IOException e) {
// e.printStackTrace();
// }
}
}
}