2017-03-09 9 views
0

パーミッションが付与されていない場合に、データベースにアップロードされるデータを停止する必要があります。セッションを強制終了し、許可が与えられている場合にのみスクリプトがデータをアップロードできるようにする方法はありますか?パーミッションが付与されていない場合、SQLデータベースにアップロード

PAGE 1:

<?php 
session_start(); 
$_SESSION['user']='studentadmin'; 
?> 

<!DOCTYPE html> 
<html> 
<head> 
<style > 
body {background-color: rgb(255,66,69);} 
h3{font-size: 250%}; 
h4{font-size: xx-small;} 
</style>  
<title>Student Examinations 2017 </title> 
<body> 
<font style="font-family: Arial;"; 

<h4>Chichester Secondary School</h2> 

<div align="center"> 
<h3>End of Year Examinations 2017</h1> 
<i><p>Using the form below please submit examination results for the end of the academic year.</p></i> 
<i><p>This years results are represented with the new government grading system. '9-1' rather than 'A*-G' </i></p> 

<form action="MySQL.php" method="POST"><br> 
<b> <br> Student: </b><br> 

<br> First Name <br> 
<input type="text" name="fname"><br/> 
Last Name <br> 
<input type="text" name="lname"><br/> 
<br>  

<br><b>Exam Board: <br></b><br> 
<input type="radio" name = "examboard" value="AQA" checked> AQA 
<input type="radio" name = "examboard" value="EdExcel" checked> EdExcel <br><br> 

<b><br>Subject Grades: </b><br> 
<br> 

English<br> 
<select name="Grade"> 
    <option value="-">-</option> 
    <option value="9">9</option> 
    <option value="8">8</option> 
    <option value="7">7</option> 
    <option value="6">6</option> 
    <option value="5">5</option> 
    <option value="4">4</option> 
    <option value="3">3</option> 
    <option value="2">2</option> 
    <option value="1">1</option> 

    </select><br> 
Maths<br> 
<select name="Grade2"> 
    <option value="-">-</option> 
    <option value="9">9</option> 
    <option value="8">8</option> 
    <option value="7">7</option> 
    <option value="6">6</option> 
    <option value="5">5</option> 
    <option value="4">4</option> 
    <option value="3">3</option> 
    <option value="2">2</option> 
    <option value="1">1</option> 
    </select><br> 
Science<br> 
<select name="Grade3"> 
    <option value="-">-</option> 
    <option value="9">9</option> 
    <option value="8">8</option> 
    <option value="7">7</option> 
    <option value="6">6</option> 
    <option value="5">5</option> 
    <option value="4">4</option> 
    <option value="3">3</option> 
    <option value="2">2</option> 
    <option value="1">1</option> 
    </select><br> 

<br> Additional Comments <br> 
<textarea name ="additionalcomments" rows="2" cols="30"></textarea><br/> 

<input type="submit" name="submit"> 
<input type="reset" name="reset"> 

<br> 

</head> 
</form> 
</body> 
</html> 

はPAGE 2:

<?php 
session_start(); 
if (isset($_SESSION ['user'])) { 
    echo "Student record successfully created by user: " .$_SESSION['user']; 
unset($_SESSION['user']); 
} else { 
    echo 'You do not have permission to access this page. '; 
} 
?> 

<?php 
$DB_HOST = "localhost"; 
$DB_USERNAME = "admin"; 
$DB_PASSWORD = "chichester"; 
$DB_NAME = "results"; 

$fname = $_POST["fname"]; 
$lname = $_POST["lname"]; 
$examboard = $_POST["examboard"]; 
$grade = $_POST["Grade"]; 
$grade2 = $_POST["Grade2"]; 
$grade3 = $_POST["Grade3"]; 
$additionalcomments = $_POST["additionalcomments"]; 

$conn = new mysqli($DB_HOST, $DB_USERNAME, $DB_PASSWORD, $DB_NAME); 

$sql = "INSERT INTO studentresults (name,lastname,examboard,additionalcomments,grade, grade2, grade3) VALUES ('$fname','$lname','$examboard','$additionalcomments','$grade','$grade2','$grade3')"; 
if ($conn->query($sql) === TRUE) { 
} 
$conn->close(); 

?> 

<html> 
<head> 
<style > 
body {background-color: rgb(255,66,69);} 
h3{font-size: 500%}; 
h4{font-size: x-large;} 
</style>  
<title>Results </title> 
<body> 
<font style="font-family: Arial;"; 
+0

kiliingセッションの代わりにいくつかの検証を実装するのはどうですか? – Maverick

答えて

1

誰かが "許可を持っていない" 場合には、これはあなたが何をすべきかです:

echo 'You do not have permission to access this page. '; 

あなたは、単にTELLそれらは許可を得ていません。しかし、とにかくコードを実行し続ける。スクリプトが処理を停止したい場合は、exitコマンドのようなものは、それを達成します:

exit('do not have permission to access this page. '); 

また、ノートの...あなたは、レコードが正常に前に挿入されたことを示すメッセージを出力しています実際には何もデータベースに挿入しません。それは...楽観的だ。操作が成功した場合は、実際にはユーザーに成功を示す必要があります。操作が何らかの方法で失敗した場合、ユーザーは非常に混乱することになります。ここで

<?php 
session_start(); 
$_SESSION['user']='studentadmin'; 
?> 

あなたはstudentadminがログインしていると、ユーザーとして保存されていることと仮定:

+0

エントリはまだデータベースに作成されています。 – Zed

+0

@ZakComber:あなたがチェックしている条件はうまくいきません。なぜなら、あなたがどこかで行った前提が真実ではないからです。 *具体的に何が起こっていますか?あなたのコードをデバッグするとき、*具体的には*失敗していますか? – David

+0

私は知らない、私はプログラミングに新しいです。 – Zed

0

これは、あなたのコードを起動する方法です。それは間違った習慣です。あなたの管理者がそれを引き継ぐのではなく、有効であることを確認する必要があります。ダビデは、すでに何$_SESSION['user']がない場合、その後、あなただけのメッセージをエコーし​​、とにかく続け、ここで指摘したように、

session_start(); 
if (isset($_SESSION ['user'])) { 
    echo "Student record successfully created by user: " .$_SESSION['user']; 
unset($_SESSION['user']); 
} else { 
    echo 'You do not have permission to access this page. '; 
} 

後で、これを持っています。とにかく値を$_SESSION['user']に割り当てる部分を削除した場合にのみ、exitを使用するという彼の提案が必要です。ただし、すでに損傷があり、ユーザーはすでにstudentadminとみなされています。 $_SESSION['username']のように今から別のキーを使用することをお勧めしますので、無効で無効な$_SESSION['user']の値は許可されないものを許可しません。しかし、これは、ユーザーが資格情報を入力する適切なログイン画面がある場合にのみ機能し、資格情報が有効であれば$_SESSION['username']を保存します。

関連する問題