PHP:序列号认证

时间:2017-06-22 08:38:36

标签: php

我对php不是很有经验,我正在尝试学习一些基础知识。这里我有一个包含序列号的数组。我希望当输入与序列号匹配时,序列号将从数组中删除。

我相信这段代码能够实现它。但我的问题是设置它。

当有人访问我的网站时我想要它。

Updated fiddle here

将somekey作为数据发送到php脚本然后验证。如何实现这一目标?

<?php

    $serialnumbers= array('2r3ewfasd', '21rfsasad', '34t3rfdsas');
    foreach ($serialnumbers as $number) {
        if(($key = array_search($number, $serialnumbers )) !== false) {
            unset($messages[$number]);
            die("found"); 
        } else {  
            die("not found.");
        }  
    }           
?>

3 个答案:

答案 0 :(得分:4)

要删除查询字符串中指示的key,您可以执行以下操作

$userkey=$_GET['key'];


$serialnumbers= array('2r3ewfasd', '21rfsasad', '34t3rfdsas');
if( in_array( $userkey, $serialnumbers ) ){
    array_splice( $serialnumbers, array_search( $userkey, $serialnumbers ), 1 );
}

我不确定为什么你认为找不到的值没有从数组中删除。考虑以下测试

/* utility function */
function pre($data){
    echo '<pre>',print_r($data,true),'</pre>';
}


$serialnumbers= array('2r3ewfasd', '21rfsasad', '34t3rfdsas');

/* Show original data in array */
pre($serialnumbers);

/* set a variable with user supplied `key` parameter */
$userkey=$_GET['key'];

/* search for and remove `$key` from original array */
if( in_array( $userkey, $serialnumbers ) ){
    array_splice( $serialnumbers, array_search( $userkey, $serialnumbers ), 1 );
}   

/* Show array after operation */
pre($serialnumbers);

/* pseudo test url used */
#https://localhost/test/?key=34t3rfdsas

/* output */
Array
(
    [0] => 2r3ewfasd
    [1] => 21rfsasad
    [2] => 34t3rfdsas
)
Array
(
    [0] => 2r3ewfasd
    [1] => 21rfsasad
)

答案 1 :(得分:1)

array_search函数已遍历您的数组,所以不要自己动手,至于你的问题,$_GET[<name of your variable>]应该使用:

<?php
$number = $_GET['key'];
$serialnumbers= array('2r3ewfasd', '21rfsasad', '34t3rfdsas');
if(($key = array_search($number, $serialnumbers )) !== false) {
    unset($messages[$number]);
    die("found"); 
}else{  
    die("not found.");
}
?>

答案 2 :(得分:1)

不要解释为什么您的代码不起作用,请考虑:

if

但这样做的努力会更少(当你在阵列中有超过3个项目时,要快得多):

overflow-x: scroll;
overflow-y: hidden;