登录
首页 >  数据库 >  MySQL

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

来源:SegmentFault

时间:2023-02-17 14:55:02 335浏览 收藏

有志者,事竟成!如果你在学习数据库,那么本文《程序员找工作必备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模拟登陆操作

/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('//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 地址等常用方法.


    
最后各位可以扫下方二维码关注我公众号,目前我正在更新基础面试题,之后会更新中高级、redis、liunx面试题

weixin.jpg

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

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>