/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Problemer med at redirecte hvis feks #midt~
Fra : Stig Sørensen


Dato : 27-01-09 13:25

Hej gruppe.

Jeg befinder mig på en hjemmeside, med en form midt på siden.
Har trykket på et <a name> link så adresselinjen i min browser ser
således ud:
minside.dk/side.php#midtpaasiden

I formen er action="#midtpaasiden", så når jeg trykker på submit-
knappen refresher browseren men leder mig direkte hen til formen igen.

Efter submit køres der naturligvis noget php kode der behandler POST
dataene.
Efter endt behandling laver jeg en redirect:

header("Location: side.php#bund");

Men det kan simpelthen ikke lade sig gøre. Den *husker* simpelthen
#midtpaasiden hele tiden.
Selv hvis jeg redirecter til google:
header("Location: http://www.google.com");

Ender jeg: http://www.google.com#midtpaasiden

Det er meget vigtigt at jeg efter _korrekt_ efterbehandling af POST
dataene kommer hen til #bund, hvis ikke korrekt efterbehandling skal
jeg ende ved #midtpaasiden igen, derfor action="#midtpaasiden".


Håber I forstår, og I kan hjælpe mig.
Jeg har virkelig krasset mig hel skaldet pga. den her...

 
 
Stig Sørensen (28-01-2009)
Kommentar
Fra : Stig Sørensen


Dato : 28-01-09 00:42

Der er ingen der kan hjælpe? Eller er det fordi jeg skal forklare mig
noget bedre?

Jeg bliver virkelig hel rundtosset af det her.

Selv hvis jeg, efter korrekt efterbehandling af POST dataene,
redirecter til en side, der så igen redirecter til en anden side,
husker den stadig #midtpaasiden i URL'en.

Jeg _må_ ikke bruge action="#midtpaasiden" i min form, før den ikke
gør det, men så kan jeg ikke se hvordan brugere skal blive ledt ned
midt på siden igen, til formen hvis ikke alle felter er korrekt
udfyldt. Det ville da være det bedste at gøre.

Birger Sørensen (28-01-2009)
Kommentar
Fra : Birger Sørensen


Dato : 28-01-09 16:18

Stig Sørensen tastede følgende:
> Der er ingen der kan hjælpe? Eller er det fordi jeg skal forklare mig
> noget bedre?
>
> Jeg bliver virkelig hel rundtosset af det her.
>
> Selv hvis jeg, efter korrekt efterbehandling af POST dataene,
> redirecter til en side, der så igen redirecter til en anden side,
> husker den stadig #midtpaasiden i URL'en.
>
> Jeg _må_ ikke bruge action="#midtpaasiden" i min form, før den ikke
> gør det, men så kan jeg ikke se hvordan brugere skal blive ledt ned
> midt på siden igen, til formen hvis ikke alle felter er korrekt
> udfyldt. Det ville da være det bedste at gøre.

Jeg forsøgte at finde rundt i din beskrivelse i går...
Det var lidt sent, og jeg endte med at give op.

du skriver at du saætter action="#midtpaasiden" - men også at data
behandles af php. Det hænger ikke umiddelbart sammen.
Du redirecter desuden, hvis input OK til side.php#bund. Jeg ved ikke
lige hvordan php fortolkeren ser #bund - det er næppe parametre, og det
bliver vel bare smidt væk?

Umiddelbart, skal du skrive din form i html, så den kan vises som
sådan, og lade et separat script behandle data - hvis OK redirekt til
min_form.html#bund hvis ikke til min_form.html#midtpaasiden

Beklager - kan ikke umiddlebart gøre det bedre.
:/

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Philip Nunnegaard (28-01-2009)
Kommentar
Fra : Philip Nunnegaard


Dato : 28-01-09 17:19

"Birger Sørensen" <sdc@bbsorensen.com> skrev

> og lade et separat script behandle data - hvis OK redirekt til
> min_form.html#bund hvis ikke til min_form.html#midtpaasiden

Det er måske der den går galt for trådstarter; Altså at han behandler
dataene i en fil der også indeholder html.

Jeg har nu altid foretrukket dette:
Formularside -> Fil der behandler dataene -> Ny side eller tilbage til
formularsiden

Så er man også ude over det bøvl med at folk får en besked om at "siden
muligvis er forældet", når de trykker "Opdater".


Stig Sørensen (28-01-2009)
Kommentar
Fra : Stig Sørensen


Dato : 28-01-09 11:48

Tror jeg bliver misforstået, så her får i koden


comments_code.php

<?php
if(!empty($_POST)) {

// Anti spam bot
   if(!empty($_POST['email'])) {
      $con->redir();
   }

// Krævede felter
   if((empty($_POST['navn']) || empty($_POST['besked']))) {
      $udfyldt_korrekt = "<p style=\"text-align:center;\">De markerede
felter med <span style=\"color:#800000\">*</span> er ikke korrekt
udfyldt!</p>";
   } else {
// Connect mySQL
      $con->db_connect("localhost", "****", "****", "****");

// Data sikker + nemme variabler
      $navn = mysql_real_escape_string($_POST['navn']);
      $email = mysql_real_escape_string($_POST['email_real']);
      $hjemmeside = mysql_real_escape_string($_POST['hjemmeside']);
      $besked = mysql_real_escape_string($_POST['besked']);
      $tidspunkt = time();
      $ip = $_SERVER['REMOTE_ADDR'];

// mySQL insert
      $con->doQuery("INSERT INTO fiskevand_kommentarer VALUES ('', '',
'1', '$tidspunkt', '$ip', '$navn', '$email', '$besked')");

      $con->redir();
   }
}




comments.php

               <hr />
               <a name="kommentar"></a>
               <h3>Kommentarer</h3>
<?php echo !empty($udfyldt_korrekt) ? $udfyldt_korrekt : ""; ?>
               <form action="#kommentar" method="post">
                  <fieldset>
                     <input type="hidden" name="email" value="" />
                     <p><label for="navn"><span style="color:#800000">*</span>
Navn:</label><input type="text" name="navn" id="navn" value="<?php
echo !empty($udfyldt_korrekt) ? htmlspecialchars($_POST['navn']) :
""; ?>" /></p>
                     <p><label for="email_real">Email:</label><input type="text"
name="email_real" id="email_real" value="<?php echo !empty
($udfyldt_korrekt) ? htmlspecialchars($_POST['email_real']) : ""; ?>" /
></p>
                     <p><label for="hjemmeside">Hjemmeside:</label><input
type="text" name="hjemmeside" id="hjemmeside" value="<?php echo !empty
($udfyldt_korrekt) ? htmlspecialchars($_POST['hjemmeside']) : ""; ?>" /
></p>
                     <p><label for="besked"><span style="color:#800000">*</span>
Kommentar:</label><textarea name="besked" id="besked" rows="7"
cols="50" ><?php echo !empty($udfyldt_korrekt) ? htmlspecialchars
($_POST['besked']) : ""; ?></textarea></p>
                     <p><label for="submit">&nbsp;</label><input type="submit"
id="submit" value="Indsend kommentar" /></p>
                  </fieldset>
               </form>
               <hr />




Dét jeg gerne vil have, er at hvis ikke man udfylder de krævede
felter, så skal en besked vises lige over formen - og man skal blive
ledt hen til formen igen (den er midt på siden), samt skal felter der
var bleven udfyldt, de skal vises med det man indtastede før.
Det er vel en ganske normal service nu om dage, at felterne ikke bare
bliver tomme hvis man nu glemmer et krævet felt, og skal starte
forfra.

Hvis alt bliver korrekt udfyldt så skal man blive ledt hen nederst på
siden, hvor man vil finde sin kommentar.


Det er dét jeg prøver på at gøre ovenstående, og ville virke hvis den
blot gad glemme hvad jeg har sat form action= til, men den husker det
simpelthen hele tiden.


Grunden til at jeg ikke bruger form action="andenside.php" til at
behandle dataene på, er at skulle et krævet felt ikke være udfyldt kan
jeg jo ikke redirecte tilbage til siden med form på - med felterne
udfyldt fra før. Jo, så skal jeg til at bruge sessions feks, men det
er vel overkill.

Birger Sørensen (28-01-2009)
Kommentar
Fra : Birger Sørensen


Dato : 28-01-09 20:20

Stig Sørensen sendte dette med sin computer:
> Tror jeg bliver misforstået, så her får i koden
>
>
> comments_code.php
>
> <?php
> if(!empty($_POST)) {
>
> // Anti spam bot
>    if(!empty($_POST['email'])) {
>       $con->redir();
>    }
>
> // Krævede felter
>    if((empty($_POST['navn']) || empty($_POST['besked']))) {
>       $udfyldt_korrekt = "<p style=\"text-align:center;\">De markerede
> felter med <span style=\"color:#800000\">*</span> er ikke korrekt
> udfyldt!</p>";
>    } else {
> // Connect mySQL
>       $con->db_connect("localhost", "****", "****", "****");
>
> // Data sikker + nemme variabler
>       $navn = mysql_real_escape_string($_POST['navn']);
>       $email = mysql_real_escape_string($_POST['email_real']);
>       $hjemmeside = mysql_real_escape_string($_POST['hjemmeside']);
>       $besked = mysql_real_escape_string($_POST['besked']);
>       $tidspunkt = time();
>       $ip = $_SERVER['REMOTE_ADDR'];
>
> // mySQL insert
>       $con->doQuery("INSERT INTO fiskevand_kommentarer VALUES ('', '',
> '1', '$tidspunkt', '$ip', '$navn', '$email', '$besked')");
>
>       $con->redir();
>    }
> }
>
>
>
>
> comments.php
>
>                <hr />
>                <a name="kommentar"></a>
>                <h3>Kommentarer</h3>
> <?php echo !empty($udfyldt_korrekt) ? $udfyldt_korrekt : ""; ?>
>                <form action="#kommentar" method="post">
>                   <fieldset>
>                      <input type="hidden" name="email" value="" />
>                      <p><label for="navn"><span style="color:#800000">*</span>
> Navn:</label><input type="text" name="navn" id="navn" value="<?php
> echo !empty($udfyldt_korrekt) ? htmlspecialchars($_POST['navn']) :
> ""; ?>" /></p>
>                      <p><label for="email_real">Email:</label><input type="text"
> name="email_real" id="email_real" value="<?php echo !empty
> ($udfyldt_korrekt) ? htmlspecialchars($_POST['email_real']) : ""; ?>" /
>> </p>
>                      <p><label for="hjemmeside">Hjemmeside:</label><input
> type="text" name="hjemmeside" id="hjemmeside" value="<?php echo !empty
> ($udfyldt_korrekt) ? htmlspecialchars($_POST['hjemmeside']) : ""; ?>" /
>> </p>
>                      <p><label for="besked"><span style="color:#800000">*</span>
> Kommentar:</label><textarea name="besked" id="besked" rows="7"
> cols="50" ><?php echo !empty($udfyldt_korrekt) ? htmlspecialchars
> ($_POST['besked']) : ""; ?></textarea></p>
>                      <p><label for="submit">&nbsp;</label><input type="submit"
> id="submit" value="Indsend kommentar" /></p>
>                   </fieldset>
>                </form>
>                <hr />
>
>
>
>
> Dét jeg gerne vil have, er at hvis ikke man udfylder de krævede
> felter, så skal en besked vises lige over formen - og man skal blive
> ledt hen til formen igen (den er midt på siden), samt skal felter der
> var bleven udfyldt, de skal vises med det man indtastede før.
> Det er vel en ganske normal service nu om dage, at felterne ikke bare
> bliver tomme hvis man nu glemmer et krævet felt, og skal starte
> forfra.
>
> Hvis alt bliver korrekt udfyldt så skal man blive ledt hen nederst på
> siden, hvor man vil finde sin kommentar.
>
>
> Det er dét jeg prøver på at gøre ovenstående, og ville virke hvis den
> blot gad glemme hvad jeg har sat form action= til, men den husker det
> simpelthen hele tiden.
>
>
> Grunden til at jeg ikke bruger form action="andenside.php" til at
> behandle dataene på, er at skulle et krævet felt ikke være udfyldt kan
> jeg jo ikke redirecte tilbage til siden med form på - med felterne
> udfyldt fra før. Jo, så skal jeg til at bruge sessions feks, men det
> er vel overkill.

Når en form submittes, bliver siden der er angivet i action hentet påny
fra serveren. At bruge et anchor, svarer til at kalde den viste side,
med tilføjelsen af anchoret.
Det er et php script. Det leverer det output du beder det om, - og jeg
tror ikke anchoret bibeholdes.
At den bliver ved med at vende tilbage dertil, kan jeg ikke forklare
dig. Du giver ikke noget link, så vi har heller ikke nogen chance for
at finde ud af, hvad der faktisk sker.
Og hvis ancoret overlever php parsing, så /skal/ browseren altså gå
dertil, tak. Derfra er du så nødt til at foretage dig et eller andet,
for at rykke til det andet anchor... (onload på body, f.eks.)
Jeg kan så i øvrigt hverken finde anchor i bunden af siden, eller noget
der henviser til det.

Bruger du en anden side, skal du finde en måde at overføre data fra
"checksiden" til formen.
SESSION kunne være een måde. De kan også POSTes eller GETtes, på normal
vis, hvis du ikke bruger SESSION i forvejen. For den sags skyld, kunne
du opbevare dem midlertidigt i en cookie...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Soren Parbo (28-01-2009)
Kommentar
Fra : Soren Parbo


Dato : 28-01-09 23:57

Stig Sørensen wrote:
> Tror jeg bliver misforstået, så her får i koden
Jeg tror, jeg har forstået dig Stig, men jeg er ikke en af de hårde
drenge, derfor kan jeg ikke vurdere din kode på rimelig tid.
MEN
det forekommer mig ulogisk at beslutte hvor linkmålet skal være før
udfyldningen er blevet kontrolleret.
Hvis du blot sætter action=minside.dk/side.php#hertil
kontrollerer og hvis alle felter er udfyldt korrektspytter du noget html
ud og placerer linkmålet i bunden.
hvis ikke placerer du linkmålet midt på siden.
Det er blot lidt 'copy paste'

> Dét jeg gerne vil have, er at hvis ikke man udfylder de krævede
> felter, så skal en besked vises lige over formen - og man skal blive
> ledt hen til formen igen (den er midt på siden), samt skal felter der
> var bleven udfyldt, de skal vises med det man indtastede før.
> Det er vel en ganske normal service nu om dage, at felterne ikke bare
> bliver tomme hvis man nu glemmer et krævet felt, og skal starte
> forfra.
>
> Hvis alt bliver korrekt udfyldt så skal man blive ledt hen nederst på
> siden, hvor man vil finde sin kommentar.
>
>
> Det er dét jeg prøver på at gøre ovenstående, og ville virke hvis den
> blot gad glemme hvad jeg har sat form action= til, men den husker det
> simpelthen hele tiden.
>
>
> Grunden til at jeg ikke bruger form action="andenside.php" til at
> behandle dataene på, er at skulle et krævet felt ikke være udfyldt kan
> jeg jo ikke redirecte tilbage til siden med form på - med felterne
> udfyldt fra før. Jo, så skal jeg til at bruge sessions feks, men det
> er vel overkill.

N/A (28-01-2009)
Kommentar
Fra : N/A


Dato : 28-01-09 23:57



N/A (28-01-2009)
Kommentar
Fra : N/A


Dato : 28-01-09 23:57



Karl Erik Christense~ (31-01-2009)
Kommentar
Fra : Karl Erik Christense~


Dato : 31-01-09 16:53

Den Tue, 27 Jan 2009 12:25:23 -0800 skrev Stig Sørensen:

> Hej gruppe.
>
> Jeg befinder mig på en hjemmeside, med en form midt på siden. Har
> trykket på et <a name> link så adresselinjen i min browser ser således
> ud:
> minside.dk/side.php#midtpaasiden
>
> I formen er action="#midtpaasiden", så når jeg trykker på submit-
> knappen refresher browseren men leder mig direkte hen til formen igen.
>
> Efter submit køres der naturligvis noget php kode der behandler POST
> dataene.
> Efter endt behandling laver jeg en redirect:
>
> header("Location: side.php#bund");
>
> Men det kan simpelthen ikke lade sig gøre. Den *husker* simpelthen
> #midtpaasiden hele tiden.
> Selv hvis jeg redirecter til google:
> header("Location: http://www.google.com");
>
> Ender jeg: http://www.google.com#midtpaasiden
>
> Det er meget vigtigt at jeg efter _korrekt_ efterbehandling af POST
> dataene kommer hen til #bund, hvis ikke korrekt efterbehandling skal jeg
> ende ved #midtpaasiden igen, derfor action="#midtpaasiden".
>
>
> Håber I forstår, og I kan hjælpe mig. Jeg har virkelig krasset mig hel
> skaldet pga. den her...

Tror dette kan hjælpe dig på vej (ide mæssigt)
http://www.phpbuilder.com/board/showthread.php?t=10362454

PHP bruger ? i stedet for #

---
Karl Erik.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste