まずはPHPについて何も知らないと言い始めるので、私が得ることのできるすべての助けに感謝します。 だから私はクライアントのためにファイルをアップロードするgodaddyでホストされたウェブサイトを持っています。友人の助けを借りて、私はユーザー名とパスワードで簡単なログインシステムを作った。問題は、ユーザー名とパスワードを入力せずにWebサイトにアクセスすることはできませんが、ブラウザに完全なリンクを直接入力することによって.jpgなどのファイルにアクセスできることです。私は、ファイルがユーザーのWebページからアクセスされる唯一の方法であるようにしたい。また、私は、各ユーザーが自分のファイルにのみアクセスでき、他のユーザーにはアクセスできないようにしたい。だからここに私のコードがあり、ハッキングを避けるために追加の変更が必要な場合は、私は入力を非常に感謝します。入力されたユーザ名とパスワードに使用されているフォームのディレクトリへのhttpアクセスを拒否しますが、内部サーバへのアクセスを許可します
index.phpファイルコード:
<form name="form1" method="post" action="checklogin.php">
<div class="lefts">
<p>Login:</p>
<p>Password:</p>
</div>
<div>
<input name="myusername" type="text" id="myusername" />
<input name="mypassword" type="password" id="mypassword" />
</div>
<div><input type="image" name="Submit" id="submit" value="Login" src="images/submitOff.png" /></div>
</form>
checklogin.php:。(正しいユーザ名とパスワードを入力した場合、それはユーザ名のWebページに行く場合ではない、それは間違ったユーザー名またはパスワードのWebページに行く
<?php
ob_start();
session_start();
$host="hostname"; // Host name
$username="username"; // Mysql username
$password="password"; // Mysql password
$db_name="dbnamey"; // Database name
$tbl_name="tablename"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT username FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
//returns false if no results returned
$row = mysql_fetch_row($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($row){
// Register $myusername, $mypassword and redirect to file
$_SESSION["myusername"] = $myusername;
$_SESSION["mypassword"] = $mypassword;
$myPage = $myusername.".php";
$_SESSION["myPage"] = $myPage;
header("location:".$myPage);
}
else {
header("location:index2.php");
}
ob_end_flush();
?>
username1.php:(ファイルが含まれていたユーザーのwebapge)
<?
session_start();
if(
//!session_is_registered(myusername)
!isset($_SESSION["myusername"]) ||
$_SESSION["myPage"] != basename($_SERVER['REQUEST_URI'])
){
header("location:index.php");
}
?>
<html>
//content that consist of links to the files
<a href="ready/username1/file.png">Png 1</a>
</html>
感謝を防ぐために
.htaccess
ファイルを使用してください。私はPHPについて何も知らないので、その理由はとても悪いです。あなたはどうしているのだろうかと思うように書き直すことができると思いますか? –@thedark_masterあなたにコードを書くためにSOを頼むことはありません。 – rook
私はディレクトリへのアクセスを防ぐためにhtaccessを使いました。このPHPダウンロードスクリプトが見つかりました:http://www.tutorialchip.com/php-download-file-script/ここで残っていることは、私は何も知らないと話しました:) –