当前位置:首页 > 文章列表 > 数据库 > MySQL > 程序员找工作必备PHP基础面试题 - 第十四天

程序员找工作必备PHP基础面试题 - 第十四天

来源:SegmentFault 2023-02-17 14:55:02 0浏览 收藏

有志者,事竟成!如果你在学习数据库,那么本文《程序员找工作必备PHP基础面试题 - 第十四天》,就很适合你!文章讲解的知识点主要包括MySQL、面试、PHP、后端、javascript,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

“PHP学习网” 公众号会每天分享一些面试题,正在找工作的小伙伴们可以来看看哦。

一、设已知目录/data1/somedir, 写一个函数, 遍历取得该目录下包含子目录所在后缀为txt的文件.

function get_dir($dir){
        if(!is_dir($dir) || !file_exists($dir)){
            exit(‘不是目录或目录不存在’);
}
$dd=opendir($dir);
readdir($dd);
readdir($dd);
while($f=readdir($dd)){
    $file=rtrim($dir,’/’).’/’.$f;
    if(pathinfo($file,PATHINFO_EXTENSION)==’txt’){
        $str.=$file.’,’;
}
if(is_dir($file)){
    $str.=$file.’,’;
    $str.=get_dir($file);
}
}
close($dd);
return $str;
}
$str=rtrim(get_dir(‘/data1/somedir’),’,’);
print_r(explode(‘,’,$str));

二、写一个函数, 算出两个文件的相对路径, 如$a = ‘/a/b/c/d/e.php’; $b= ‘/a/b/12/34/c.php’; 计算出$b 相对于$a 的相对路径 应该是../../c/d 将()添加上

 $a = '/a/b/c/d/e.php';
  $b = '/a/b/12/34/c.php';
  getpathinfo($a, $b);
  function getpathinfo( $a, $b ) {
      $a2array = explode('/', $a);
      $b2array = explode('/', $b);
      $pathinfo = '';
      for( $i = 1; $i 

三、假设某论坛 url http://test.com/login.php 为注册用户入口地址, 请用程序实现摸拟注册用户的过程, 成功之后到http://test.com/thread.php?id... 需要考虑有图形验证码的情况,验证码如:9679

答:采用curl模拟登陆操作

<?php $bbs_url = 'http://test.com/ ';//论坛地址
$login_url = $bbs_url .' login.php ';//登录页地址
$post_fields = array();
//以下两项不需要修改
$post_fields['loginfield'] = 'username';
$post_fields['loginsubmit'] = 'true';
//用户名和密码,必须填写
$post_fields['username'] = 'tianxin';
$post_fields['password'] = '111111';
//安全提问
$post_fields['questionid'] = 0;
$post_fields['answer'] = '';
//@todo验证码
$post_fields['seccodeverify'] = '';

//获取表单FORMHASH
$ch = curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
preg_match('/&lt;input\s*type=&quot;hidden&quot;\s*name=&quot;formhash&quot;\s*value=&quot;(.*?)&quot;\s*\/&gt;/i', $contents, $matches);
if(!empty($matches)) {
    $formhash = $matches[1];
} else {
    die('Not found the forumhash.');
}

//POST数据,获取COOKIE,cookie文件放在网站的temp目录下
$cookie_file = tempnam('./temp','cookie');

$ch = curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_exec($ch);
curl_close($ch);

//取到了关键的cookie文件就可以带着cookie文件去模拟发帖.
$send_url = $bbs_url." thread.php?id=100";
$ch = curl_init($send_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$contents = curl_exec($ch);
curl_close($ch);

//这里的hash码和登陆窗口的hash码的正则不太一样,这里的hidden多了一个id属性
preg_match('/&lt;input&gt;/i', $contents, $matches);
if(!empty($matches)) {
    $formhash = $matches[1];
} else {
    die('Not found the forumhash.');
}
$post_data = array();
//帖子标题
$post_data['subject'] = 'test2';
//帖子内容
$post_data['message'] = 'test2';
$post_data['topicsubmit'] = "yes";
$post_data['extra'] = '';
//帖子标签
$post_data['tags'] = 'test';
//帖子的hash码,这个非常关键!假如缺少这个hash码,会警告你来路的页面不正确
$post_data['formhash']=$formhash;
$ch = curl_init($send_url);
curl_setopt($ch, CURLOPT_REFERER, $send_url);       //伪装REFERER
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$contents = curl_exec($ch);
curl_close($ch);
//清理cookie文件
unlink($cookie_file);

?>

四、设计一个类, 实现用户管理,需求如下(写出文体结构限可)

  1. 用文件存储用户 信息,用户注册输入用户 名,密码和电子邮件;
  2. 注册后需要通过发送电子邮件来验证用户的信息真实和有效;
  3. 密码需要加密.保证安全性
  4. 用户可以登录,退出和注销,并将用户的这些操作行为记录到日志中
  5. 如果用户没有退出 下次登录自动显示用户名和最后一次登录的信息

Class manage{
  public  function  login(){
  }
  public  function  logout(){
  }
  public  function  zhuxiao(){
  }
  private  function  log(){
  }
  private  function  info(){
  }
  private  function  mail(){
  }
  private  function  safe(){
  }
  private  function  my_cookie(){
  }
}

五、实现一个JS工具库, 分别实现判断字符串参数是否为数字. 是否为日期格式为(YYYY-mm-dd). 是否为邮件地址 是否为URL 地址等常用方法.


    <title></title><script type="text/javascript">
        function tool(){
            this.mail=function(mail){
                var pre="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
                var res=mail.exec(pre);
                if(!res){
                    return false;
                }else{
                    return ture;
                }
            }
            this.date=function(date){
                var pre="/^((((19|20)\d{2})-(0?(1|[3-9])|1[012])-(0?[1-9]|[12]\d|30))|(((19|20)\d{2})-(0?[13578]|1[02])-31)|(((19|20)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))-0?2-29))$/";
                var res=date.exec(pre);
                if(!res){
                    return false;
                }else{
                    return ture;
                }
            }
            .
            .
            .
        }
    </script>
最后各位可以扫下方二维码关注我公众号,目前我正在更新基础面试题,之后会更新中高级、redis、liunx面试题

weixin.jpg

文中关于mysql的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《程序员找工作必备PHP基础面试题 - 第十四天》文章吧,也可关注golang学习网公众号了解相关技术文章。

版本声明
本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
MySQL 自定义变量@ 常用案例MySQL 自定义变量@ 常用案例
上一篇
MySQL 自定义变量@ 常用案例
docker安装mysql
下一篇
docker安装mysql
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    514次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    499次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • SEO  AI Mermaid 流程图:自然语言生成,文本驱动可视化创作
    AI Mermaid流程图
    SEO AI Mermaid 流程图工具:基于 Mermaid 语法,AI 辅助,自然语言生成流程图,提升可视化创作效率,适用于开发者、产品经理、教育工作者。
    662次使用
  • 搜获客笔记生成器:小红书医美爆款内容AI创作神器
    搜获客【笔记生成器】
    搜获客笔记生成器,国内首个聚焦小红书医美垂类的AI文案工具。1500万爆款文案库,行业专属算法,助您高效创作合规、引流的医美笔记,提升运营效率,引爆小红书流量!
    672次使用
  • iTerms:一站式法律AI工作台,智能合同审查起草与法律问答专家
    iTerms
    iTerms是一款专业的一站式法律AI工作台,提供AI合同审查、AI合同起草及AI法律问答服务。通过智能问答、深度思考与联网检索,助您高效检索法律法规与司法判例,告别传统模板,实现合同一键起草与在线编辑,大幅提升法律事务处理效率。
    695次使用
  • TokenPony:AI大模型API聚合平台,一站式接入,高效稳定高性价比
    TokenPony
    TokenPony是讯盟科技旗下的AI大模型聚合API平台。通过统一接口接入DeepSeek、Kimi、Qwen等主流模型,支持1024K超长上下文,实现零配置、免部署、极速响应与高性价比的AI应用开发,助力专业用户轻松构建智能服务。
    759次使用
  • 迅捷AIPPT:AI智能PPT生成器,高效制作专业演示文稿
    迅捷AIPPT
    迅捷AIPPT是一款高效AI智能PPT生成软件,一键智能生成精美演示文稿。内置海量专业模板、多样风格,支持自定义大纲,助您轻松制作高质量PPT,大幅节省时间。
    650次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码