gpt4 book ai didi

php - 使用codeigniter创建主页面

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:01:58 24 4
gpt4 key购买 nike

如何使用codeigniter创建主页面?
该页面应该包含一些链接,如登录、注册等。
我按照tut创建了一个登录屏幕。但它只为这个目的而制造了编码器。这就是我所说的网站:
http://tutsmore.com/programming/php/10-minutes-with-codeigniter-creating-login-form/
所以基本上,我想要的是,使用codeigniter不仅仅是一个登录表单。
my try routes.php我设置了以下设置:

$route['default_controller'] = "mainpage";
$route['login'] = "login";

我的mainpage.php文件:
class Mainpage extends Controller
{
function Welcome()
{
parent::Controller();
}

function index()
{

$this->load->view('mainpage.html');
}
}

主页.html:
<HTML>

<HEAD>
<TITLE></TITLE>
<style>
a.1{text-decoration:none}
a.2{text-decoration:underline}
</style>

</HEAD>

<BODY>

<a class="2" href="login.php">login</a>

</BODY>
</HTML>

login.php与我在这篇文章中提供链接的网站中的login.php一模一样:
Class Login extends Controller
{
function Login()
{
parent::Controller();
}

function Index()
{
$this->load->view('login_form');
}

function verify()
{
if($this->input->post('username'))
{ //checks whether the form has been submited
$this->load->library('form_validation');//Loads the form_validation library class
$rules = array(
array('field'=>'username','label'=>'username','rules'=>'required'),
array('field'=>'password','label'=>'password','rules'=>'required')
);//validation rules

$this->form_validation->set_rules($rules);//Setting the validation rules inside the validation function
if($this->form_validation->run() == FALSE)
{ //Checks whether the form is properly sent
$this->load->view('login_form'); //If validation fails load the <b style="color: black; background-color: rgb(153, 255, 153);">login</b> form again
}
else
{
$result = $this->common->login($this->input->post('username'),$this->input->post('password')); //If validation success then call the <b style="color: black; background-color: rgb(153, 255, 153);">login</b> function inside the common model and pass the arguments
if($result)
{ //if <b style="color: black; background-color: rgb(153, 255, 153);">login</b> success
foreach($result as $row)
{
$this->session->set_userdata(array('logged_in'=>true,'id'=>$row->id,'username'=>$row->username)); //set the data into the session
}

$this->load->view('success'); //Load the success page
}
else
{ // If validation fails.
$data = array();
$data['error'] = 'Incorrect Username/Password'; //<b style="color: black; background-color: rgb(160, 255, 255);">create</b> the error string
$this->load->view('login_form', $data); //Load the <b style="color: black; background-color: rgb(153, 255, 153);">login</b> page and pass the error message
}
}
}
else
{
$this->load->view('login_form');
}
}
}

我在想什么?

最佳答案

你在用密码点火器,对吧?您的配置中是否有一些规定,必须在所有URL上使用.php作为扩展?如果没有,则应将hrefs发送到“/login”not“/login.php”。此外,如果您还没有从htaccess文件和ci配置中的url中删除“index.php”,那么您可能需要在链接中包含它。
此外,如果我是你,我就不会遵循sarfraz在mainpage.php文件中所做的。您不应该在codeigniter中使用标准php includes。使用include完成的任何事情都可以通过加载视图轻松完成。例如,如果要将视图加载为字符串,可以说:

$loginViewString = $this->load->view('login.php', '', true);

其中,第二个参数是要在关联数组中传递给视图的任何信息,其中键是要传递的变量的名称,值是值。那是…
$dataToPassToView = array('test'=>'value');
$loginViewString = $this->load->view('login.php', $dataToPassToView, true);

然后在login.php视图中,只需引用变量$test,它的值为“value”。
另外,您不需要声明“login”路由,因为您只是将其重定向到“login”控制器。你所能做的就是用一个带有“login”方法的“user”控制器来声明你的路由,如下所示:
$routes['login'] = 'user/login';

编辑…
好吧,我想这可能是朝着错误的方向走了一两步。我们重新开始,好吗?
首先,让我们从与此讨论相关的文件列表开始:
application/controllers/main.php(这将是您的“默认”控制器)
application/controllers/user.php(这将是处理用户相关请求的控制器)
application/views/header.php(我通常喜欢将页眉和页脚作为单独的视图,但这是不必要的…你可以简单地将内容作为字符串回显到“mainpage”视图中,就像你正在做的那样…尽管我应该提到,在你的示例中,你似乎忘记将其回显到正文中)
应用程序/views/footer.php
application/views/splashpage.php(这是包含登录页面链接的页面内容)
application/views/login.php(这是登录页面的内容)
application/config/routes.php(这将用于重新路由/login到/user/login)
所以,现在让我们看看每个文件中的代码,它们将实现您所要做的。首先是main.php控制器(这也是您的默认控制器)。当您转到网站的根地址时,将调用此命令…www.example.com网站
应用程序/控制器/main.php
class Main extends Controller
{
function __construct() //this could also be called function Main(). the way I do it here is a PHP5 constructor
{
parent::Controller();
}

function index()
{
$this->load->view('header.php');
$this->load->view('splashpage.php');
$this->load->view('footer.php');
}
}

现在让我们看看页眉、页脚和SplashPage视图:
应用程序/views/header.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="This is the text people will read about my website when they see it listed in search engine results" />
<title>Yustme's Site</title>

<!-- put your CSS includes here -->

</head>

<body>

application/views/splashpage.php-注意:这里没有理由需要包装器div…它只是作为一个例子放在那里
<div id="splashpagewrapper">
<a href="/login">Click here to log in</a>
</div>

应用程序/views/footer.php
</body>
<!-- put your javascript includes here -->
</html>

现在让我们看看用户控制器和login.php视图:
应用程序/控制器/用户.php
class User extends Controller
{
function __construct() //this could also be called function User(). the way I do it here is a PHP5 constructor
{
parent::Controller();
}

function login()
{
$this->load->view('header.php');
$this->load->view('login.php');
$this->load->view('footer.php');
}
}

应用程序/views/login.php
<div id="login_box">
<!-- Put your login form here -->
</div>

最后是生成/login look for/user/login的路径:
应用程序/config/routes.php
//add this line to the end of your routes list
$routes['login'] = '/user/login';

就这样。没有魔法什么的。我之所以提到可以将视图作为字符串加载,是因为您可能不希望有单独的“页眉”和“页脚”视图。在这种情况下,您可以简单地将一个视图作为字符串“回送”到另一个视图中。另一个例子是,如果您有一个购物车装满了项目,并且您希望购物车和项目是单独的视图。您可以遍历您的项目,将“ShoppingCartItem”视图加载为每个项目的字符串,将它们连接在一起,并将该字符串回显到“ShoppingCart”视图中。
所以应该是这样。如果你还有问题,请告诉我。

关于php - 使用codeigniter创建主页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3405614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com