DB 레코드와 일치하는 고유 한 URL 변수를 생성하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1065631

문제

다음과 같은 URL 변수를 생성하고 싶습니다.

http://example.com/195yq
http://example.com/195yp
http://example.com/195yg
http://example.com/195yf

변수는 MySQL 레코드 세트와 일치하여 철수 할 수 있습니다. 그 레코드 세트를 만들 때, 나는이 키를 만들고 싶습니다.

어떻게 할 수 있습니까? 이것을하는 가장 좋은 방법은 무엇입니까? 내가 사용할 수있는 기존 클래스가 있습니까?

감사합니다

도움이 되었습니까?

해결책

기본적으로 어떤 종류의 해시 기능이 필요합니다.

이것은 SHA-1 함수, MD5 함수 (Altcogito) 또는 레코드에있는 다른 데이터를 사용하여 인코딩 할 수 있습니다.

얼마나 많은 기록을 가질 것이라고 생각하십니까? 해시 함수로 솔루션을 선택하는 데주의를 기울여야합니다. 해시 기능은 당신을 잘 덮을 수있을 정도로 커야하지만 너무 커서 필요한 것보다 더 큰 데이터베이스를 만듭니다. 나는 필요에 따라 SHA-1과 잘린 비트를 64 또는 32 비트로 사용했습니다.

또한 휴식을보십시오. URL이 그렇게 신비 할 필요가 없다고 생각하십시오 ...

다른 팁

이것은 몇 가지 방법으로 매우 간단 할 수 있습니다.

  • 다음과 같은 해시를 사용하십시오 MD5. (길다)
  • 베이스 -64 특정 ID 또는 데이터를 인코딩합니다

MySQL 레코드와 함께 이미이 작업을 수행하는 것이 있는지 아닌지 묻는다면, 디자인 면적으로 무언가를 찾을 수 있는지 확신 할 수 없으며, 데이터는 실제로 웹 사이트의 URL에서 실제로는 개념적으로 멀리 떨어져 있습니다. 성배와 같은 프레임 워크에서도. 대부분은 프론트 엔드 및 데이터 액세스 기능을 단일 조각으로 마무리하려고 시도하지 않습니다.

어떤 맥락에서 이것을 사용 하시겠습니까? 왜 우편 변수를 통과하지 않습니까? 훨씬 더 안전하고 깔끔합니다. ID = 195YQ와 같은 URL의 숫자를 계속 달성하고 php.ini 파일을 구성하여 숨길 수있는 방법이 있습니다.

이것이 당신에게 도움이 될 수 있기를 바랍니다.

이것을 명심하십시오. 주소 표시 줄에서 변수를 전달하면 누군가가 변수를 변경하기 쉽고 액세스하지 않기를 원할 수 있습니다.

당신이 준 예제에서, 당신은 숫자 1 차 키를 인코딩하는 Base-64처럼 보입니다. 그것이 내가 그것을하고 과거에 그것을했던 방법이지만, Base-64 디코딩이 사소하기 때문에 ID를 명확하게 전달하는 것보다 더 낫지는 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top