2014-01-14 2 views
1

그래서 오래 동안 코딩 된 오래된 웹 사이트가 있지만 3 년 동안 비활성 상태였습니다. 사이트에 전체 PHP 소스가 있지만 문제는 더 이상 데이터베이스의 백업이 없다는 것입니다. 나는 데이터베이스를 재현하는 최선의 해결책이 무엇 일지 궁금하다. 그것은 큰 사이트이므로 수동으로 각 PHP 파일을 살펴보고 참조되는 테이블을 추적하려고 시도하는 것은 작은 작업이 아닙니다. 나는 대답을 인터넷 검색을 시도했지만 운이 없었습니다. 누구든지 PHP에서이 정보를 추출하는데 도움이되는 도구를 알고 있으며 적어도 데이터베이스 뼈대의 기초를 제공합니까? 그렇지 않으면 누구도 이것을해야만 했습니까? 나를 도울 수있는 조언과 프로세스 속도를 높일 수있는 방법은 무엇입니까? 그것은 사용하려고하는 MySQL 데이터베이스입니다.기존 PHP 코드를 사용하여 데이터베이스 다시 만들기

+0

당신이 데이터베이스에 추가 할 파일의 예를 게시 할 수있는 DB를 다시 할 수있는 방법을 제공하는 데 있지 사형을 채찍질 이전 디자이너가? –

+0

그는 파일을 추가하고 싶지 않습니다. 그는 코드에서 데이터베이스를 리버스 엔지니어링하려고합니다. 그러나 제공된 정보를 통해 우리는 PHP가 데이터베이스에 어떻게 액세스하는지 추측 할 수 있습니다. –

+0

이것은 문제가 될 것입니다. 코드에서 항목을 추출 할 수 있더라도 테이블 수준 ID, 키 제약 조건, 조회 테이블 등에서는 전체 데이터베이스 그림을 절대 가져올 수 없습니다. –

답변

1

방법 :

이 SQLI의 하위 집합을 쓰기 또는 무엇이든 인터페이스는 모든 DB 액세스를 차단하기 위해 DB에 액세스하는 데 사용되었다. 모든 DB 액세스를 귀하의 더미 버전으로 대체하십시오.

기본적인 아이디어는 PHP 코드가 다양한 DB 액세스를 활성화 할만큼 충분히 길게 실행되도록 DB를 에뮬레이트하는 것이며, 그러면 DB가 작성되고 사용되는 방식을 분석 할 수 있습니다. 이 더미 함수 내에서

: 코드 실행의 나머지 부분을 수 있도록

  • 중생 충분히 더미 결과를 사용하는 SQL 코드

    • 인쇄, 쿼리에 언급 된 테이블과 필드에 기반 매개 변수 및 그들을 검색하는 PHP 코드 (SELECT *에서 많은 것을 배우지는 않지만 PHP 코드에서 얻을 수있는 필드를 알 수 있습니다)
    • 일단 DB 구조를 충분히 이해하고 테이블을 다시 작성하면 원래 코드가 작동하도록하십시오. 그들에게 조금씩
    • 하여 프로그래밍 방식
  • 0

    제공하신 정보에 따라 현재 두 가지 답변이 있습니다.

    1)이 작업을 수행 할 수 없습니다. PHP는 유형이 다른 언어입니다. 필드 및 테이블 이름을 찾는 SQL 문을 확인할 수 있습니다. 그러나 그것은 완료되지 않을 것이다. select * from table이 있으면 필드를 볼 수 없습니다. 그래서 당신은 php가 필드에 접근하는지 확인해야합니다. 어쩌면 이름이나 색인으로. 필드의 이름을 추출 할 수 있기 때문에 이것이 이름으로 행해지면 행복 할 수 있습니다. 마지막으로 데이터 유형이 누락됩니다. 누락 된 위치 : 인덱스는 어디에 있고, 기본 키는 무엇이며, 제약 조건은 무엇입니까?

    2) 쉽습니다. 귀하의 PHP가 orm이 포함 된 최신 프레임 워크를 사용하고 있기 때문입니다. 이것은 당신을 위해 데이터베이스를 만들었습니다. 메타 정보는 php 클래스/디자인에 포함됩니다. 데이터베이스를 재 작성하는 방법을 매뉴얼에서 확인하십시오. 나는 그것을 할 것

    관련 문제