기본적으로 짧게 유지하기 위해 몇 가지 스크립트를 만들어야하는 대학 과제가 있습니다.PHP가 txt 파일에 기록에 로그인하지 못했습니다.
이 중 하나에서 데이터가 로그인 양식에 잘못 입력되면 스크립트를 작성해야합니다. 따라서 사용자 IP 주소를 가져 와서 텍스트 파일에 넣고 시간, 날짜, 오류 이름 (예 : 잘못된 사용자 이름 및 암호, 잘못된 이름, we.), 오류 페이지 및 시도를 입력하십시오.
내가 알아 낸 : 얻을하는 방법을 사용자가 내가 원하는 무엇을, 어떻게 방법을 시도
이제를 기록하는 시간과 날짜 을 얻는 을 IP : 나는 검색 스크립트를 원하는 사용자 IP 주소 및이 IP 주소가 실패한 시도에 대해 이미 기록 된 경우 새 레코드를 만드는 대신 해당 IP 주소에 대한 시도에 1을 더하고 시간과 날짜를 업데이트합니다. 이 IP 주소가 기록되지 않은 경우에만 새 레코드를 작성해야합니다.
<?php
$time = date("h:i:sa");
$date = date("d/m/y");
$error = "Incorrect Data Entered";
$attempts = 0;
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$myFile = "errorLog.txt";
$file = fopen($myFile, 'a') or die("can't open file");
$searchfor = "$ip";
// the following line prevents the browser from parsing this as HTML.
header('Content-Type: text/plain');
// get the file contents, assuming the file to be readable (and exist)
$contents = file_get_contents($myFile);
// escape special characters in the query
$pattern = preg_quote($searchfor, '$ip');
// finalise the regular expression, matching the whole line
$pattern = "/^.*$pattern.*\$/m";
// search, and store all matching occurences in $matches
if(preg_match_all($pattern, $contents, $matches)){
echo "Found matches:\n";
echo implode("\n", $matches[0]);
}
else{
$attempts = 1;
$stringData = "$ip, $time, $date, $error, $attempts\n";
fwrite($file, $stringData);
fclose($file);
}
?>
왜이 태그가 C++입니까? 그것은이 질문과 아무 관련이 없습니다. –
플랫 파일보다 db가 훨씬 더 쉬울 것입니다. –
C++과 관련이 없으면 C++을 사용하고 있습니다. 죄송합니다. 또한 DB와는 더 쉽게 작업 할 수 있지만 조건은 묻습니다. 파일 형식, 내가 어떻게 MySQL DB를 함께 할 줄 알아 : | – SebastianZdroana