2013-09-24 9 views
0

저는 스크립팅을 처음 접했지만 코드 로직을 잘 따라 왔습니다. mysql 데이터베이스에 양식을 게시하고 테이블의 같은 페이지에 정보를 가져 오는 두 개의 작업 스크립트 (아래에 게시 됨)가 있습니다. 내가 성취하고자하는 다음 일에 도움을 얻는 데 어려움을 겪고 있습니다.php/mysql이 문제와 양식 소팅을 정렬합니까?

1.) 형태를 살균하는 것은 주입/기타에 매우 개방적이라는 말을 들었습니다. 대부분의 사람들은 텍스트를 제출할 것이며, 결국 두 번째 스크립트에서 호출하여 클릭 할 수있는 html 링크를 게시 할 수있게하고 싶습니다.

2.) 가장 최근 게시물이 맨 위에 오도록 콜백 스크립트가 정보를 정렬하도록합니다. (날짜와 시간을 자동으로 감지하여 정렬에 사용하는 범주 및 내용과 함께 새로운 mysql 열을 만들 수 있습니까? 그 예가 몇 가지 예입니다.

제출 양식이

입니다.
<html> 
<div style="width: 330px; height: 130px; overflow: auto;"> 
<form STYLE="color: #f4d468;" action="send_post.php" method="post"> 

    Category: <select STYLE="color: #919191; font-family: Veranda; font-weight: bold; font-size: 10px; background-color: #000000;" name="category"> 
<option value="category 1">category 1</option> 
<option value="category 2">category 2</option> 
<option value="category 3">category 3</option> 
<option value="Other">Other</option> 
</select> <br> 

    <textarea overflow: scroll; rows="4" cols="60" STYLE="color: #919191; font-family: Veranda; font-weight: bold; font-size: 10px; background-color: #000000; width:300px; height:80px; margin:0; padding:0;" name="contents"></textarea><br> 
    <input type="submit" STYLE="color: #919191; font-family: Veranda; font-weight: bold; font-size: 10px; background-color: #000000;" value="Create Log"> 
</form> 
</div> 
</html> 

<?php 
//Connecting to sql db. 
$connect=mysqli_connect("localhost","myuser","mypassword","mydb"); 

header("Location: http://mywebsite.com/myhomepage.php"); 

if (mysqli_connect_errno()) { echo "Fail"; } else { echo "Success"; } 

//Sending form data to sql db. 
mysqli_query($connect,"INSERT INTO mydbtable (category, contents) 
VALUES ('$_POST[category]', '$_POST[contents]')"); 

?> 

sendpost.php 그리고 가져 오기 PHP 페이지

<?php 
$con=mysqli_connect("localhost","myuser","mypassword","mydb"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$result = mysqli_query($con,"SELECT * FROM mydbtable"); 

echo "<table border='1'> 
<tr> 
<th>Category</th> 
<th>Contents</th> 
</tr>"; 

while($row = mysqli_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td>" . $row['category'] . "</td>"; 
    echo "<td>" . $row['contents'] . "</td>"; 
    echo "</tr>"; 
    } 
echo "</table>"; 

mysqli_close($con); 
?> 
에 다시 호출 0

2 개의 스크립트에서 $ con = mysqli_connect 명령으로 연결하는 경우에도 기본적으로 노출됩니까? 누군가가 PHP에 접속하여 정보를 볼 수 없습니까?

정말 도움을 주셔서 감사 드리며 일을 할 수있는 올바른 방법을 배우고 기꺼이 배웁니다.

+3

준비된 문을 보면 –

+0

[PHP에서 SQL 삽입을 방지하려면 어떻게합니까?] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)) –

+0

스크립팅을 처음 접한다면 트랩에 빠지기 전에 [best practices (best practice)를 배우십시오] (http://www.phptherightway.com/)를 참조하십시오. 귀하의 경우, [데이터베이스] (http : //www.phptherightway.com/# databases) 섹션을 사용하고 적어도 [Doctrine] (http://doctrine-project.org/)과 같은 데이터베이스 추상화 레이어를 사용하십시오. – tadman

답변

0

다음 두 가지 질문을 통해 도움을 얻을 수 있습니다.

  1. How can I prevent SQL injection in PHP?

  2. SELECT * FROM mydbtable ORDER BY date 
    

그리고 오픈에서 DB 암호와 연결을 가지고위한

How can I specify sql sort order in sql query

... 일반적으로 사람들은 비록 (즉, PHP 파일을 포함 더 안전하게 만들지는 못합니다). 그러나 파일 시스템에 대한 루트 액세스 권한이 있으면 htdocs보다 높은 디렉토리에 넣을 수 있으며 URL을 통해 액세스 할 수 없습니다.

dbconnect.php

$con=mysqli_connect("localhost","myuser","mypassword","mydb"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

index.php를

include 'dbconnect.php'; 

그러나,이 실제로 어떤 안전하지 않습니다, 단지 실수로 코드를 게시하지 않습니다 편리 너의 비밀번호.

+0

비밀 번호/연결 성명은 어떨까요 공개적으로 그렇게 보이는가, 취약한 문제입니까? – user2792624

+0

@ user2792624 아무도 당신과 당신의 서버를 넣는 것을 볼 수 없습니다 ... dbpw.php라는 다른 PHP 파일에 그것을 넣는 것이 허용되는 방법입니다. 그냥 포함 시키십시오. –

+0

아, 정말 고마워! – user2792624