Meddelande

Minska
No announcement yet.

Hur använder man en motsvarighet till location.replace i perl?

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Hur använder man en motsvarighet till location.replace i perl?

    Jag sökte på google och fick lite träffar om att kunna använda location.replace i perl sammanhang.

    Perl skriptet ska alltså vid tillfällen då den skickar vidare en användare till en annan sida eliminera möjligheten till att backa och i HTML världen är ju location.replace ett sätt.

    Några tips?
    Mvh
    Haider

  • #2
    Nej,

    location.replace är JavaScript. Det finns inget hållbart sätt att göra detta via (enbart) serverside-script.
    / Jojoxx

    "Always remember that you're unique and special, just like everyone else..."

    Kommentera


    • #3
      Tack Jojoxx,

      men kan man genom perl göra javascript anrop, att man simulerar det på något vis?
      Mvh
      Haider

      Kommentera


      • #4
        Varför ska man inte kunna backa?
        Gameboy Genius - Foto: Gatukonst och elektronikporr
        Internklippning:
        1) Snaggning av fångar.
        2) Klippning frisörer emellan.

        Kommentera


        • #5
          Jo, rent generellt har location.replace fördelar som att man i vissa fall vill kontrollera när man ska kunna besöka en viss sida. Säg att en viss sida inte ska besökas om man inte även anger en parameter. Så skulle man i den sidan - som i det här fallet är ett perl-script, alltså www.sida/cgi-bin/skript.pl - ha en åtgärd som kontrollerar om sidan/perl-filen ska laddas upp eller inte, så kvarstår problemet att man kan backa tillbaka till sidan för att sen slungas ut igen. Då får man dubbelbacka eller nåt för att ta sig ur.
          Men location.replace skulle ju eliminera detta helt.

          Jag eftersöker helt enkelt en perl lösning för att plocka bort en sida ur browser cachen.
          Mvh
          Haider

          Kommentera


          • #6
            Kan du inte skicka headern "Location: ....."?

            /edit: testade just in FF och då kan man inte backa tillbaka till URL som genererar "Location: ...".
            So long and thanks for the fish.

            Tyvärr så har jag nu en person på min ignoreringslista. Personen ifråga höjer inte trivselfaktorn här, snarar tvärtom varför jag nu tackar för mig!

            Kommentera


            • #7
              Gunnar: det låter som det jag är ute efter, men pratar du om en Perl lösning? Jag vet att man i PHP kan göra så här:
              Kod:
              header("Location: http://www.example.com/");
              Så det du pratar om låter som PHP eller?
              För jag vill kunna ange www.sida.se/cgi-bin/perl.pl och så ska perl skriptet känna igen att man har angett scriptfilen som sökväg och då ska scriptet skicka vidare besökaren.
              Mvh
              Haider

              Kommentera


              • #8
                I Perl skriver du ut headers precis som vilken text som helst... Headern skrivs ut först av allt, och efterföljs av två radbrytningar. Därefter kommer ev innehåll.


                Edit:
                Exempel: http://johnbokma.com/perl/redirectioncgiscript.html
                "Det finns tre sorters lögn; vanlig lögn, förbannand lögn och statistik" - Mark Twain

                Kommentera


                • #9
                  Metalboy, du anar inte hur glad jag är åt den länken - jag har sett detta ämne tidigare men inte riktigt förstått att det är samma sak.
                  Det är faktiskt så det avlöste ett gammalt problem jag hade och tydligen rör det sig om precis samma sak.

                  Just det gamla problemet behövde en Status: 301 Moved Permanantly medan exemplet i sidan du gav mig använder en Status: 302 Moved.

                  Beteendemässigt upplever jag att de gör samma sak. Är skillnaden vad sökmotorer ska tolka länkarna som? Eller finns det nån annan skillnad?
                  Mvh
                  Haider

                  Kommentera


                  • #10
                    haider skrev: Visa inlägg
                    Metalboy, du anar inte hur glad jag är åt den länken - jag har sett detta ämne tidigare men inte riktigt förstått att det är samma sak.
                    Det är faktiskt så det avlöste ett gammalt problem jag hade och tydligen rör det sig om precis samma sak.

                    Just det gamla problemet behövde en Status: 301 Moved Permanantly medan exemplet i sidan du gav mig använder en Status: 302 Moved.

                    Beteendemässigt upplever jag att de gör samma sak. Är skillnaden vad sökmotorer ska tolka länkarna som? Eller finns det nån annan skillnad?
                    301 och 302 gör för dig som användare ingen skillnad. Det är mest för program och sökmotorer som responskoder är intressant. Google kommer exempelvid börja ersätta länkar till den gamla sidan med den nya vid en 301. 302 brukar de lägga i relation till varandra så de vet när statusen ändras.
                    Min alldeles egna directory listing.

                    Kommentera


                    • #11
                      Jag missforstod nog vad du ville haider. Jag trodde du sökte ett sätt ett sätt att se till att ditt perlscript inte skall sparas i history'n. Vilket åtminstone jag inte hittat nåt fungerande alternativ till.

                      Att skicka "HTTP/1.1 302 Found" kan fungera i vissa lägen, dock inte alltid. Jag vet att jag testat att göra det i en webshopsapplikation där jag vill förhindra dubbelpostningar, och att anropet till varukorgen inte skall sparas så att om man klickar köp på en artikel (som postas till varukorgen) och användaren sedan klickar "back" så skall man inte backa posten till varukorgen utan snarare till steget innan sidan där den aktuella artikeln finns. Jag provade att posta till ett script som lade produkten i varukorgen, och sedan returnerade en http-302 för att visa varukorgen. Detta fungerade dock ett par gånger, sedan verkade det som att webbläsaren vägrade att posta till en url som var tidigare känd som "flyttad" och snarare efterfrågades den url som 302 pekade på.
                      / Jojoxx

                      "Always remember that you're unique and special, just like everyone else..."

                      Kommentera


                      • #12
                        Tack Colione


                        Jojoxx: Jo, men det verkar som om den lösning jag använder nu ..
                        Kod:
                        print "Status: 301 Moved Permanantly\nLocation: $FORM{url}\n\n";
                        gör just detta, att den tar bort scriptet från historyn. Klickar man alltså på skriptet = en adress som pekar till skriptet, så hamnar man dit skriptet skickar en. Backar man så hamnar man i sidan som pekade till perl scriptet. I javascript termer så är detta ju en location.replace eller hur?
                        Mvh
                        Haider

                        Kommentera


                        • #13
                          Nästan. Det finns dock en markant skillnad. När en webbläsare får en 301 från servern så betyder det enligt standard att webbläsaren får spara denna adress (både orginal-adressen och den adress dit ompekningen sker). När användaren nästa gång klickar på en länk, eller postar ett formulär till orginaladressen kan webbläsaren istället använda den "nya" adressen. D.v.s. ditt script som returnerat 301 aldrig mer blir anropat. Det webbservern egentligen talat om för webbläsaren är nämligen att "Denna resurs finns inte längre, försök inte att använda den".

                          Problemet är att även 302 (moved temporary) verkar fungera på samma sätt. Antagligen eftersom webbläsaren antar att "eftersom resursen inte fanns nyss kommer den säkert inte att finnas under denna session, vi tar den nya adressen istället".
                          / Jojoxx

                          "Always remember that you're unique and special, just like everyone else..."

                          Kommentera

                          Working...
                          X