2013-06-06 10 views
6

Ecco cosa il mio albero diretory assomigliaUtilizzando azione form HTML con uno script PHP di essere in un'altra directory (percorsi relativi)

/application 
    /lib 
    /util 
     /login 
    /views 
     /base_view 

mia pagina di login è

localhost:737/astuto-lena/branches/application/views/base_view/index.php 

E voglio l'azione di la mia forma di essere presente

localhost:737/astuto-lena/branches/application/util/login/main.php 

Ecco la mia dichiarazione forma

<form class="form_login" action="./util/login/main.php" method="POST"> 
... 
</form> 

Ma quando si fa clic sul pulsante di invio, mi ci vuole per

localhost:737/astuto-lena/branches/application/views/base_view/util/login/main.php 

Qual è la strada sbagliata e genera un errore 404.

Allora, cosa c'è di sbagliato con il modo in cui sto usando percorsi relativi nella dichiarazione del mio modulo e come posso risolverlo?

risposta

7

Nel vostro percorso relativo ./util/login/main.php, si sta utilizzando ./ che si riferisce alla cartella corrente, quindi si presuppone che la struttura della cartella /util/login è dentro /base_view. Si dovrebbe provare a utilizzare ../ che si riferisce alla cartella principale:

<form class="form_login" action="../../util/login/main.php" method="POST"> 
... 
</form> 
+0

Grazie! Giusto per chiarire: c'è qualche ragione per cui dovrei usare il '../' due volte? O forse una situazione in cui potrei usare solo un '../'? – Flayshon

+1

@Flayshon in realtà Sì, c'è una differenza, fondamentalmente nel tuo caso, si inizia in 'localhost: 737/astuto-lena/branches/application/views/base_view /', se si usa '../' una volta terminato in 'localhost: 737/astuto-lena/branches/application/views /' e usandolo due volte si arriva a 'localhost: 737/astuto-lena/branches/application /' che è anche la cartella che contiene '/ util/login/' – DarkAjax

+0

Grande.Grazie ancora :) – Flayshon

1

è necessario impostare l'azione per una migliore percorso relativo o utilizzare un percorso assoluto. Esempi:

../../util/login/main.php 

o

/astuto-lena/branches/application/util/login/main.php 

./ significa semplicemente this directory (aka current working directory)

1

È necessario utilizzare ../per andare alla directory principale

<form class="form_login" action="../../util/login/main.php" method="POST"> 
... 
</form> 
0

ho affrontato il un problema simile e l'errore che ho ottenuto è stato oggetto non trovato /application /includes connect.php insert.php index.php

<form action="/includes/insert.php" method="post"> 
    //code 
</form> 

il codice di cui sopra non ha funzionato e ha mostrato l'errore 404 oggetto non trovato. Ma,

<form action="./includes/insert.php" method="post"> 
    //code 
</form> 

L'unica differenza è l'aggiunta . nel percorso di azione. Le cose strane è /include/filename funziona bene per require o include ma sarà necessario aggiungere . per l'attributo form action

Problemi correlati