更改网页内容而不更改URL

时间:2014-11-02 05:19:00

标签: php html

我想建立一个简单的网站,用户可以输入他们的名字。但我不知道我怎么能这样做。

这就是我想要的。

在我的index.php中,会有一个input,允许用户输入其名称。用户点击按钮后,我希望用户留在index.php但是内容不同。 我可以做文本域和按钮的网站。但是,在用户点击按钮后,我不知道该怎么办。

不明白我的意思? 例如,这是Facebook登录页面。 Source: Google

登录后,

Source: Google

我们仍在同一页面(index.php)但内容已更改。我知道如何制作网站,但我不知道如何更改内容而不更改网址(例如www.example.com/index.php?u=blah,我只想要www.example.com/index。 PHP)

有人能为我提供一个关于如何制作这个的例子/想法吗?提前致谢。 抱歉我的英语不好。

编辑:抱歉我的英语不好。其实我的意思是,相同的网址,但内容不同。我用Google搜索,我认为cookie是最佳解决方案。

4 个答案:

答案 0 :(得分:0)

您需要使用AJAX:

  

AJAX允许通过在幕后与服务器交换少量数据来异步更新网页。这意味着可以更新网页的各个部分,而无需重新加载整个页面。

我认为在这里给出一个关于AJAX的教程没什么用处,但你可以阅读w3school's AJAX tutorial。 如果您了解基本知识,我建议使用jQuery,这是一个比纯JavaScript更简单的javascript库。

答案 1 :(得分:0)

您需要使用AJAX进行内容更新,而无需重新加载网页。

JS代码:

<script type="text/javascript">
$(document).ready(function() {
    var track_load = 0; //total loaded record group(s)
    var loading  = false; //to prevents multipal ajax loads
    var total_groups = <?php echo $total_groups; ?>; //total record group(s)

    $('#results').load("autoload_process.php", {'group_no':track_load}, function() {track_load++;}); //load first group

    $(window).scroll(function() { //detect page scroll

        if($(window).scrollTop() + $(window).height() == $(document).height())  //user scrolled to bottom of the page?
        {

            if(track_load <= total_groups && loading==false) //there's more data to load
            {
                loading = true; //prevent further ajax loading
                $('.animation_image').show(); //show loading image

                //load data from the server using a HTTP POST request
                $.post('autoload_process.php',{'group_no': track_load}, function(data){

                    $("#results").append(data); //append received data into the element

                    //hide loading image
                    $('.animation_image').hide(); //hide loading image once data is received

                    track_load++; //loaded group increment
                    loading = false; 

                }).fail(function(xhr, ajaxOptions, thrownError) { //any errors?

                    alert(thrownError); //alert with HTTP error
                    $('.animation_image').hide(); //hide loading image
                    loading = false;

                });

            }
        }
    });
});
</script>

HTML代码:

<ol id="results"></ol>
<div class="animation_image" style="display:none" align="center"><img src="ajax-loader.gif">    </div>

您可以找到完整的教程here

答案 2 :(得分:0)

你需要使用AJAX。首先,创建一个用于收集表单数据的页面,然后在索引页面中使用AJAX加载另一个提交页面。您可以查看https://github.com/jobayerccj/Simple-Admin-Panel-using-PDO-AJAX,我已经使用AJAX创建了一个管理面板,我使用AJAX加载内部页面而不更改链接。

答案 3 :(得分:0)

您可以使用PHP来执行此操作,这也是我为所有网站所做的事情,这只是一个想法,不确定它是否正是您正在寻找的,但这里是我当前网站的链接,如果你想看到它的生活。当您单击站点顶部的链接时,请务必检查URL。 http://www.thedecoy.net

因此,在index.php页面中,您将获得该网站的基本html代码,包括css和图像,或者您希望在所有网站上显示的任何其他内容,然后在内部使用内容div标签你可以做这种类型的PHP代码。

<?php 
error_reporting(E_ALL ^ E_NOTICE); 
function open_page($string){
    if (preg_match("/^[a-zA-Z]+$/", $string)){
        $string = $string;
    }else{ 
        $string = "";
    }
    return $string;
}
$page = open_page($_GET['page']);
if ($page){
    $file = "pages/".$page.".php";
if (file_exists($file)){
    $pagename = $page;
}else{
    $pagename = "404";
}
include("pages/".$pagename.".php");
}else{
    echo 'Anything you want displayed in the content of your main page would go here';
}
?>

你会创建一个名为&#34; pages&#34;的目录。在index.php文件所在的根文件夹中然后在其中你可以创建其他页面,例如about.php,contact.php等我确定你明白了,在这些文件中你只会放置你想要的内容显示所以你不需要所有的html头部主体或任何你想要的内容div本身。

假设您想要将访问您网站的用户链接到您只需在链接上调用的contact.php文件。

<a href="index.php?page=contact">Contact</a>

将保持index.php加载,但将内容更改为contact.php信息。 代码有点草率,从我的网站本身拉出来,所以你可能需要处理一些事情。

在页面文件夹中放置一个404.php页面如果找不到页面,将会调用此页面,以便访问者在输入不存在的链接时会看到此页面。

不确定我是否遗漏了任何东西,但请随时询问这是否对您有所帮助。