2011-09-27 5 views
3

재래식 (녹슨면) 프로그래밍 배경에서 조금 벗어나 웹 사이트의 "무국적"성격을 파악하는 데 바쁩니다. 그것은 꽤 사고 방식 변화입니다!웹 프로그래밍 원칙

나는 일상적으로 갈기의 일부를 추적하기 위해 내부적으로 작업하는 팀을위한 작은 웹 사이트를 만들었습니다. 이 사이트는 기능적이며, 내가 관리 할 수 ​​있었던 것을 자랑스럽게 생각합니다. bla bla bla.

그러나 나는 어딘가에서 내가 나쁜 방식으로 그것을했을지도 모르는 것을 읽었습니다. 특히, 팀 웹 사이트의 중앙 페이지가 대부분의 작업을 수행합니다. 그것은 당신이 어디서 왔는지를 확인한 후 어떤 작업을 수행하기 위해 "전환"하고 (데이터베이스에서 약간의 변경) 페이지를 다시 렌더링합니다.

많은 경우 페이지가 단순히 자신을 호출합니다! 내가하는 일은 내가 테이블을 보여주는거야. 각 행의 마지막 열에는 일련의 html 양식이 있습니다. 각 양식에는 제출 버튼과 숨겨진 필드가 하나 이상 있습니다. "제출"버튼에는 "삭제", "수정", "보관"등과 같은 이름/값이 있습니다.

$_POST['submit'] == "delete" 그러면 숨겨진 필드로 식별되는 행에서이 기능을 수행합니다. Vis에 "아카이브"를 보냅니다. 수정을 위해 새 페이지를 열고 기본값이있는 양식을 표시하고 사용자가 양식을 제출하면 주 PHP 페이지가 다시 호출되어 SQL 업데이트가 실행되어 표가 표시됩니다.

본질적으로 메인 페이지의 시작 부분 근처에 커다란 (그리고 커지는) 케이스 구조가 로그인 버튼을 포함하여 대부분의 작업을 수행합니다! (가) 프롬프트 때 사용자 프레스 뒤로 "양식 데이터를 다시 보내기"제거하는 방법이 있나요

  1. :

    그것은 아주 깔끔한 것 같다 및이 방법을 조직,하지만 난이 개 질문이? 뒤로 버튼은 대부분이 웹 사이트에서는별로 의미가 없지만 여기서 인간을 다루고 있습니다. 다른 사람들이 로그 아웃 버튼과 비슷한 질문을 올렸지 만, 지금까지 발견 한 답변은 나에게 거의 비슷하지 않습니다.

  2. 나쁜 프로그래밍 습관, 특히 전체 PHP 호출 자체가 폼 액션 개념인가 ....?

감사합니다.

답변

4

:

  1. 당신은 당신이 당신의 데이터를 '일을'오른쪽 후 사용자를 리디렉션 제출 한 후 의미 포스트 - 리디렉션-얻을 같은 무언가를 찾고 있습니다, 그래서 타격 뒤로 버튼이 다시 제출되지 않습니다!

  2. 일반적으로 처음 작동하는 방식입니다. 잠시 후 OOP (Object Oriented Programming)를 보거나 각각의 액션을 함수로 분리하는 것만으로도 별개의 파일로 함수를 구현할 수 있습니다. 당신이 개발 무엇

+0

게시 - * 리다이렉트 * - – Phil

+2

Oups 덕분에 ... 좋은 기능이 될 것입니다 게시 할 때마다 재 설계, 그렇지 않을거야;) – Anonymous

+0

고딕 댄. 필자는 함수를 사용하고 일반 사이트 차원의 함수에 대한 포함 파일을 가지고 있습니다. 나는 아직도 내가 아는 기본 이론 인 OOP에 빠져 들어야한다. 나는 알고 있었다. 곧 모든 것이 나에게 다시 돌아올 것입니다. –

2

Post-redirect-get은 매우 명확하게이를 해결하는 패턴입니다. 질문에 대한

+0

을 내 추신 : 동감 Dan에 대한 의견 - 제안 된 솔루션에 감사드립니다. 나는 이것이 문제를 해결할 것이라고 믿으며 앞으로이 방법을 여러 번 사용할 것입니다. 그 동안이 인스턴스에서 나에게 가장 적합한 솔루션인지 여부를 결정하기 위해 노력하고 있습니다. –

1

웹 사이트가 아니라 더 같은) functions의 PHP 설명서를 확인하거나 자세한 내용은 정말 치열 경우, OOP는 성배가 될 것입니다,하지만 그건 '비트'복잡 웹 응용 프로그램."뒤로 버튼 문제"를 제거하려면 JavaScript 매직 사용을 고려해야합니다. 예를 들어 Ajax를 사용하면 다른 페이지를 열거 나 동일한 페이지에 제출할 필요가 없도록 할 수 있습니다. jQuery는 페이지의 일부를 표시하거나 숨길 수 있습니다 사용자 상호 작용을 기반으로).

두 번째 질문은 : 하나의 PHP 파일에 모든 로직을 갖는 것이 잘못되었습니다. 물론, 당신은 bazillion 줄의 코드를 가지고 있지만 작은 응용 프로그램을 가지고 있다면 해칠 수 있습니다. 왜 안 되니?!

일반적으로 논리와 GUI를 분리하는 것이 좋습니다. 당신은 그것에 대해 here 읽을 수 있습니다.

+0

내 문제 설명에 대한 좋은 통찰력을 제공해야합니다! 제안과 의견에 감사드립니다! –

1

양식 데이터가 처리 된 후 페이지를 redirect 페이지로 보내는 것이 항상 현명한 아이디어입니다. 그것은 페이지 새로 고침이나 뒤로 버튼에서 양식을 다시 보내는 것을 방지합니다.

PHP에서 리디렉션을 위해, 당신은 사용할 수 있습니다 :

header("Location: {url here without brackers}"); 
+0

감사합니다. 또한 다른 의견에 대한 저의 다른 답변을 참조하십시오! –