php cli 用户输入,PHP 实现 CLI 交互式输入

/**

* 创建管理员账号脚本

*/

require_once dirname(__DIR__) . '/UpforPHP/bootstrap.php';

require_once dirname(__DIR__) . '/vendor/autoload.php';

use Upfor\UpforPHP\Library\Password;

if (PHP_SAPI != 'cli') {

echo '请在CLI模式下运行';

die;

}

// 生成密码

if (isset($argv[1])) {

echo '密 码:', $argv[1], "\n";

echo '加密后:', "\n", Password::hash($argv[1]), "\n";

die;

}

// 创建账号

$email = '';

$password = '';

$realName = '';

$mobile = '';

echo '创建管理员账户...', "\n\n";

// 邮箱

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

echo '请输入[email]:';

READ_EMAIL:

echo "\n";

$email = read();

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

echo '[email]格式不正确, 请重新输入:';

goto READ_EMAIL;

}

echo "\n";

}

if (db()->table('admin_user')->where('email', $email)->has()) {

echo '账号已存在!!!', "\n";

die;

}

// 密码

if (strlen($password) < 6) {

echo '请输入[password]:';

READ_PASSWORD:

echo "\n";

$password = read();

if (strlen($password) < 6) {

echo '[password]长度不可小于6位, 请重新输入:';

goto READ_PASSWORD;

}

echo "\n";

}

// 姓名

if (strlen($realName) < 6) {

echo '请输入[姓名]:';

READ_REAL_NAME:

echo "\n";

$realName = read();

if (strlen($realName) < 2) {

echo '[姓名]错误, 请重新输入:';

goto READ_REAL_NAME;

}

echo "\n";

}

// 手机

if (strlen($mobile) < 6) {

echo '请输入[mobile]:';

READ_MOBILE:

echo "\n";

$mobile = read();

if (strlen($mobile) != 11 || !is_numeric($mobile)) {

echo '[mobile]错误, 请重新输入:';

goto READ_MOBILE;

}

echo "\n";

}

$data = [

'email' => $email,

'password' => Password::hash($password),

'real_name' => $realName,

'mobile' => $mobile,

'status' => 1,

'last_login_ip' => '0',

'last_login_time' => '0',

'create_time' => time(),

'update_time' => time(),

];

if (!model('AdminUser')->insert($data)) {

$error = db()->errorInfo();

echo '创建账号失败, 请重试';

var_dump($error);

die;

}

echo '管理员账号创建成功!!!', "\n";

var_dump($data);

die;

// 交互式读取CLI输入

function read() {

$fp = fopen('php://stdin', 'r');

$input = fgets($fp, 255);

fclose($fp);

$input = trim($input);

return $input;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值