小编Dav*_*son的帖子

将所有内容重定向到index.php htaccess

我对这个话题的第10000000个问题表示道歉,但我无法按照我想要的方式工作.

我正在写一个简单的php mvc'ish框架.我希望这个框架能够安装在任何目录中.

我的PHP脚本的作用:抓住请求uri并将其分解为段.使段1成为控制器,段2成为动作.当我这样做时,这一切都很好:

http://www.domain.com/mvc/module/test/

它将转到特定的模块控制器和方法.现在我有一个默认控制器,即家庭控制器,它位于文件夹中.

现在当我直接访问这个文件夹 http://www.domain.com/mvc/home/ 它会显示403禁止,因为这个文件夹确实存在,相反它也应该回到 http://www.domain.com /mvc/index.php

如果我将框架安装在不同的文件夹中,让我们说文件夹框架,它必须重定向回http://www.domain.com/framework/index.php

我想将每个文件夹和php文件重定向回index.php,保留其他所有内容.

我遇到的第一个问题是它永远不会重定向到正确的文件夹,总是重定向到域根文件夹.

这是我试过的:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
Run Code Online (Sandbox Code Playgroud)

我真的希望有人可以帮助我或指出我正确的方向!

非常感谢!!

php .htaccess

114
推荐指数
5
解决办法
27万
查看次数

视图作曲家多次运行,如何减少到1

我在Laravel 5中创建了一个视图作曲家.当我使用通配符*时,为我的所有视图添加一些东西,它被称为至少两次.它在我的主模板加载时运行,并在包含我的内容页面时再次运行.这将在将来产生问题,因为它会多次执行查询.我能够通过将其存储在静态变量中来修复多重查询:

class StoreComposer {


static $composed;


public function __construct(StoreRepository $repository)
{
    $this->store = $repository;
}


public function compose(View $view)
{

    if(static::$composed)
    {
        return $view->with('store', static::$composed);
    }


    static::$composed = $this->store->pushCriteria( new WithCategories() )
        ->pushCriteria( new WithSettings() )
        ->applyCriteria()
        ->all();

    $view->with('store', static::$composed);
}

} 
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法确保它只运行一次,无论我加载了多少视图,还是有另一种解决方案?我现在修理它的方式对我来说并不合适.谢谢!

php laravel

8
推荐指数
1
解决办法
1151
查看次数

组件不呈现Angular 2 Typescript

我正在尝试学习Angular 2,经过大量的错误消息后我终于得到了路线工作,我可以显示我想要的组件.现在我想显示我的主页组件,我希望这个组件中有一个导航栏组件.

Home.ts:

import {Component, View} from 'angular2/core';
import {Navbar} from './navbar/navbar'

@Component({
  selector: 'home'
})

@View({
  templateUrl: '/app/home/home.html'
})

export class Home {

    constructor:(public navbar: Navbar) {
    }

}
Run Code Online (Sandbox Code Playgroud)

home.html的:

<p>NICE!</p>
<navbar></navbar>
Run Code Online (Sandbox Code Playgroud)

navbar.ts:

import {Component, View} from 'angular2/core';

@Component({
  selector: 'navbar'
})

@View({
  template: `
  <ul>
    <li>This is the navbar</li>
  </ul>
  `
})

export class Navbar{
}
Run Code Online (Sandbox Code Playgroud)

主页正在显示,但标签只<navbar></navbar>在我检查时停留.我究竟做错了什么?

typescript angular

6
推荐指数
1
解决办法
3874
查看次数

如何使用多个外键Laravel 5 Eloquent查询数据透视表

我有以下表结构:

| products | product_options | product_option_values | product_option_to_product |
+----------+-----------------+-----------------------+---------------------------+
| id       | id              | id                    | id                        |
|          |                 |                       | product_id                |
|          |                 |                       | product_option_id         |
|          |                 |                       | product_option_value_id   |
Run Code Online (Sandbox Code Playgroud)

我的关系看起来像这样:

// Product.php
public function options()
{
    return $this->belongsToMany('App\ProductOption', 'product_option_to_product', 'product_id', 'product_option_id')->withPivot('product_option_value_id', 'product_id');
}

// ProductOption.php
public function values()
{
    return $this->belongsToMany('App\ProductOptionValue', 'product_option_to_product', 'product_option_id', 'product_option_value_id')->withPivot('product_id');
}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试这个:

$products = Product::with('options')->with('options.values')->first();
Run Code Online (Sandbox Code Playgroud)

要么

$products = Product::with('options.values')->first();
Run Code Online (Sandbox Code Playgroud)

我得到所有选项可能的值,因为它不使用产品ID来加载选项值.

有谁知道我怎么能确保它只加载属于该产品的值?

我可以在产品上直接与选项值建立关系,但我确实需要将它们附加到它们所属的选项上.

编辑:

我尝试了这样的连接:

$products = Product::with(['options.values' …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-5

5
推荐指数
1
解决办法
1725
查看次数

Laravel 会话/存储在刷新时为空

我有以下代码:

            echo 'First try: <br />';
            $input = Session::get('input');
            pre($input, false);

            echo 'Second try: <br />';
            Session::put('input', 'test');
            pre(Session::get('input'));
Run Code Online (Sandbox Code Playgroud)

它在第一次加载时给出以下输出:

First try:
Second try:
test
Run Code Online (Sandbox Code Playgroud)

这是第一次预期的,但是当我重新加载页面时,我得到完全相同的输出。所有数据都在刷新后只是丢失。

我知道它不是闪存数据,但我不知道为什么它不存储数据。我在 Windows 上使用基于文件的会话和 Xampp(使用 artisan serve 时也会发生同样的情况)。

存储文件夹是可写的。

编辑:刚刚尝试使用数据库会话,结果相同。而且我直接在路由文件中执行此操作,因此没有其他代码可以将其弄乱。

前置功能:

function pre( $data , $kill = true)
{
    echo '<pre>'.print_r($data,true).'</pre>';
    if($kill){
      exit;
}
Run Code Online (Sandbox Code Playgroud)

php laravel

3
推荐指数
1
解决办法
2377
查看次数

PHP Captcha - 会话总是空的

我试图在我的注册表单中添加验证码.除了会话变量总是为空之外,图像渲染得很好,所以它根本不起作用.

我使用以下课程:http://www.ejeliot.com/pages/php-captcha

根据文档,我不得不制作一个包含以下内容的php文件:

<?php
require('classes/PhpCaptcha.php');
$aFonts = array('fonts/VeraBd.ttf', 'fonts/VeraIt.ttf', 'fonts/Vera.ttf');
$oVisualCaptcha = new PhpCaptcha($aFonts, 200, 60);
$oVisualCaptcha->SetBackgroundImages('captchaimgbg.jpg');
$oVisualCaptcha->Create();
?>
Run Code Online (Sandbox Code Playgroud)

并将其作为图像包含在内.

现在我调查了Create(); 函数,在这个函数中另一个名为GenerateCode()的函数; 被调用,负责生成字母并将其放入会话变量中.

代码如下:

      function GenerateCode() {
     // reset code
     $this->sCode = '';

     // loop through and generate the code letter by letter
     for ($i = 0; $i < $this->iNumChars; $i++) {
        if (count($this->aCharSet) > 0) {
           // select random character and add to code string
           $this->sCode .= $this->aCharSet[array_rand($this->aCharSet)];
        } else {
           // select random character and …
Run Code Online (Sandbox Code Playgroud)

php session captcha

2
推荐指数
1
解决办法
3050
查看次数

is_object没有返回预期的结果php

我正在编写一个脚本,我可以检查权限和内容,我偶然发现了一些奇怪的东西.

我的权限脚本可以检查系统和功能,并查看是否允许用户使用m.

我将用一些代码解释:

if(permission::check('factbounce', 'magklik')){
echo ' Yep good ';
} else {    
echo 'Nope not good';
}
Run Code Online (Sandbox Code Playgroud)

这里我有一个系统factbounce和一个函数magklik,现在在权限类中:

public static function check($systemCode, $functionCode = null ){
        $instance = self::get();

        if($instance->checkSystem($systemCode)){            
            if(is_null($functionCode))
                return true;

            if(!$instance->checkSystemFunction($functionCode))
                return false;

            return true;

        }   

        return false;
    }
Run Code Online (Sandbox Code Playgroud)

这段代码将触发checkSystemFunction,并将检查magklik:

private function checkSystemFunction ( $functionCode ){

    if(!self::$oSystemFunction)
        self::$oSystemFunction = org_system_function::getByCode($functionCode);

    if(!is_object(self::$oSystemFunction));
        echo 'No Object';

    echo '<pre>'.print_r(self::$oSystemFunction, true).'</pre>';

    if(!self::$oSystemPermission->checkFunctionPermission(self::$oMedewerker, self::$oSystemFunction))
        return false;

    return true;        

}   
Run Code Online (Sandbox Code Playgroud)

代码的输出是这样的:

No Object
org_system_function Object
(
    [primaryKey] => org_system_function_id
    [table] …
Run Code Online (Sandbox Code Playgroud)

php

0
推荐指数
1
解决办法
1355
查看次数

标签 统计

php ×6

laravel ×3

.htaccess ×1

angular ×1

captcha ×1

laravel-5 ×1

session ×1

typescript ×1