如何在表单提交php

时间:2017-10-03 02:12:52

标签: php url

网站描述:我的网站允许用户上传开源PHP网站项目。

您好我想知道在用户提交表单后如何生成像 sitename.com/projects.html?id=x 这样的网址。我该怎么做?我不知道从哪里开始。

new-project.html: 可让用户上传新的开源网络项目。

<?php
    include_once('includes/header.php'); ?>
    <?php 
    include_once 'dbconnect.php';

    // fetch files
    $sql = "select filename from tbl_files";
    $result = mysqli_query($con, $sql);
    ?>
    <?php
    session_start();
    include_once "vendor/autoload.php";
    $page = new membership\Page(1);
    if ($page->isValid() == true) {
        ?>




    <div id="container">
      <div class="wrapper">
        <div id="content">
          <h2>New Project</h2>
          <p><center>

    <form action='upload.php' method='post' enctype='multipart/form-data'>
                            <legend>Select File to Upload:</legend>
                            <div class='form-group'>
    Title: <br /><input type='text' name='title' maxlength="255"/><br /><br />
    Description: <br /><textarea type='text' name='description' maxlength="2000"></textarea><br /><br />

                                <input type='file' name='file1' />
                            </div>
                            <div class='form-group'><br />
                                <input type='submit' name='name' value="Submit" class='btn btn-info'/>
                            </div>

                            <?php if (isset($_GET['st'])) { ?>
                                <div class='alert alert-danger text-center'>
                                    <?php
                                    if ($_GET['st'] == "success") {
                                        echo "File Uploaded Successfully!";
                                    } else {
                                        echo 'Invalid File Extension!';
                                    }
                                    ?>
                                </div>
                            <?php } ?>
                        </form></center>

    </p><?php } ?>

    <br /></div>
    </p>

        <div id="column">
          <div class="holder">
            <h2>Project Upload Rules</h2>
            <ul id="latestnews">
              This is this rules you must follow for uploading a project.<br /><br />
     - You must own the project / script.<br />
     - Must be 100% clean / safe.<br />
     - Code must be easy to read.<br />
     - No outdated code.<br />
    <br />
    If you don’t follow the rules your account who be banned. 
              <br />
          </p>

        <br /></p>
              </li>
            </ul>
          </div>
        </div>
        <br class="clear" />
      </div>
    </div>

    <?php include_once('includes/footer.php'); ?>

任何帮助都会很好。

编辑:

projects.html

<?php include("includes/header.php"); ?>
<?php
include_once 'dbconnect.php';

// fetch files
$sql = "select filename, title, description from tbl_files LIMIT 4";
$result = mysqli_query($con, $sql);
?>


<div id="container">
  <div class="wrapper">
    <div id="content">
      <h2>Lastest 5 Projects <button style="float: right;"><a href="new-project.html">New Project</a></button></h2>
      <p><table class="table table-striped table-hover">
                <thead>
                    <tr>
                        <th>#</th>
                        <th>File Name</th>
<th>Description</th>
                        <th>Download</th>
                    </tr>
                </thead>
                <tbody>
                <?php
                $i = 1;
                while($row = mysqli_fetch_array($result)) { ?>
                <tr>
                    <td><?php echo $i++; ?></td>
                    <td><?php echo $row['title']; ?></td>
<td><?php echo $row['description']; ?></td>
                    <td><a href="uploads/<?php echo $row['filename']; ?>" download>Download</td>
                </tr>
                <?php } ?>
                </tbody>
            </table>
</div>
</p>

    <div id="column">
      <div class="holder">
        <h2>Welcome!</h2>
        <ul id="latestnews">

          <li class="last"> <p><?php
    session_start();
   include_once "vendor/autoload.php";
    $page = new membership\Page(1);
    if ($page->isValid() == true){
         echo "Hello " . $_SESSION["username"] . "!<br /><br />

<a href='logout.html'>Logout</a>\n";
        } elseif ($page->isValid() == false) { echo "<center>Please <a href='login.php'>Log in</a> to share projects.<br /> <a href='register.php'>Need A Account?</a></center>";}
?><br />
      </p>

    <br /></p>
          </li>
        </ul>
      </div>
    </div>
    <br class="clear" />
  </div>
</div>

<?php
error_reporting(E_ALL & ~E_NOTICE);
include('includes/memberlistconfig.php');

// call this file only after database connection
require_once 'functions.php';
?>


<div id="container">
  <div class="wrapper">
    <div id="content">
      <h2>Categories</h2>
      <p>
        <div class="height20"></div>
        <?php echo $emsg; ?>

  <article>
          Click on one of the categories to see what’s inside.
          <ul>
            <?php
            $res = fetchCategoryTreeList();
            foreach ($res as $r) {
              echo  $r;
            }
            ?>
          </ul>
         </article>
</div></p>
<br class="clear" />
  </div>
</div>

  <?php include("includes/footer.php"); ?>

upload.php的

<?php include('dbconnect.php'); ?>
<?php
//check if form is submitted
if (isset($_POST['submit']))
{
    $filename = $_FILES['file1']['name'];

    //upload file
    if($filename != '')
    {
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        $allowed = ['zip', 'rar', 'php', 'html', 'sql'];

        //check if file type is valid
        if (in_array($ext, $allowed))
        {
            // get last record id
            $sql = 'select max(id) as id from tbl_files';
            $result = mysqli_query($con, $sql);
            if (count($result) > 0)
            {
                $row = mysqli_fetch_array($result);
                $filename = ($row['id']+1) . '-' . $filename;
            }
            else
                $filename = '1' . '-' . $filename;

            //set target directory
            $path = 'uploads/';

            $created = @date('Y-m-d H:i:s');
            move_uploaded_file($_FILES['file1']['tmp_name'],($path . $filename));

$title = '';
if(!empty($_POST['title']))
{
   $title = mysqli_real_escape_string($con, $_POST['title']);
}
$description = '';
if(!empty($_POST['description']))
{
   $description = mysqli_real_escape_string($con, $_POST['description']);
}
            // insert file details into database
            $sql = "INSERT INTO tbl_files(filename, created, title, description) VALUES('$filename', '$created', '$title', '$description')";
            mysqli_query($con, $sql);
            header("Location: new-project.html?st=success");
        }
        else
        {
            header("Location: new-project.html?st=error");
        }
    }
    else
        header("Location: new-project.html");
}
?>

2 个答案:

答案 0 :(得分:1)

现在,您的表单提交到upload.php。因此,只需创建upload.php并处理POST请求并将信息保存在数据库中,然后将用户重定向到sitename.com/projects.html?id=x。您可以使用header('location: /projects.html')从PHP重定向用户。

现在代替projects.html,您需要projects.php(除非您有自己的路由系统或服务器设置,否则.html页面不会被PHP解析)。您需要/projects.php?id=3的PHP,因为您想动态生成该页面。

根据提供的ID动态生成/project.php?id=3页面。您可以使用$_GET访问ID的值。它的工作原理如下:

if(isset($_GET['id']) && ctype_digit($_GET['id'])){
    # user have requested the page with a valid id (only number)
    # now you can use $_GET['id'] to generate this page dynamically.
    // your code here
    // you probably want to authenticate users too
    $requested_id = $_GET['id'];
}

答案 1 :(得分:0)

当用户提交新项目时,生成一个随机数并将其作为带有项目详细信息的id保存到数据库中。因此,当有人前往sitename.com/projects.php?id=x时,它会在数据库中查找id并提供详细信息。

projects.php看起来像这样:

<?php
$id = $_GET['id'];
$sql = "SELECT * FROM projects WHERE `id`='{$id}'";

...
?>