Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[PHP] Redirect initialiseert browser connectie...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hi allemaal,

Ik kijk even ergens overheen. Wellicht dat jullie het zien.

Ik ben een soort online webshop aan het maken waarin een bestelsysteem zit wat op basis van sessions werkt.

De functionaliteit hiervan werkt uitstekend, ik heb alleen problemen met de redirect naar een volgende pagina. Indien in enkele van de functies van de winkelwagen een redirect wordt gegeven, dan verwijst de browser naar 127.0.0.1. Een refresh op diezelfde pagina pakt dan trouwens ook de css niet meer.

de testcase: http://dev.ultraserv.nl/logic3/nl/index.php

inloggen met test / test, en dan een artikel aan de winkelwagen toevoegen...

de betrefffende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
function add2cart()
{
    global $details, $msg, $errmsg, $redirect, $_SESSION;
    
    // Het product wat we toevoegen moeten we eerst controleren
    if(is_numeric($_POST['productnummer'])) $productnummer = $_POST['productnummer'];
    else exit("Type Fout!.");
    if(is_numeric($_POST['hoeveelheid'])) $hoeveelheid = $_POST['hoeveelheid'];
    else exit("Type Fout.");
    
    // Kijken of er wel iets besteld is?
    if ($hoeveelheid == 0) {
      echo "<p> 0 is geen aantal!</p>\n";
    exit();
    }
    
    // Controleren of er al inhoud is op de winkelwagen
    if (empty($_SESSION['cart'])){
      // Nee dus, een nieuwe maken
      $_SESSION['cart'] = $productnummer.",".$hoeveelheid;  // Het productnummer,hoeveelheid staat dus in een sessie
    } else {
      // Winkelwagen opsplitsen op de pipe
      $cart = explode("|",$_SESSION['cart']);
    
      // Winkelwagen inhoud tellen
      $count = count($cart);
    
      // En controleren of het product al in de winkelwagen zit
      $add = TRUE;   // var om later te kijken of we moeten toevoegen
      foreach($cart as $products)
      {
        // Exploden
        /*
          $product[x] -->
             x == 0 -> productnummer
             x == 1 -> hoeveelheid
        */
        $product = explode(",",$products);
        if ($product[0] == $productnummer) {
          // Product al in de winkelwagen
          $product[1] = $product[1] + $hoeveelheid;  // Nieuwe hoeveelheid is oude + nieuwe
          $add = FALSE;  // Dus niet toevoegen
        }
    
        // En weer in de sessie zetten
        $i++;
        if ($i == 1) {
          $_SESSION['cart'] = $product[0].",".$product[1];
        } else {
          $_SESSION['cart'] = $_SESSION['cart']."|".$product[0].",".$product[1];
        }
      }
    
      if ($add) { // Als we dus wel moeten toevoegen
        $_SESSION['cart'] = $_SESSION['cart']."|".$productnummer.",".$hoeveelheid;
      }
    }

    $details = "Artikel toegevoegd aan winkelwagen!";
    $redirect = "<script>setTimeout(\"document.location = 'index.php'\", 1500);</script>\n";

}


het lijkt erop dat 'iets' de relatieve locatie niet goed snapt of vermeubelt.

De redirect wordt aangeroepen in de footer (en werkt op alle andere pagina's met formulieren wel goed...

Verwijderd

Topicstarter
overigens, op het moment dat die pagina op het scherm staat, werkt ook geen enkele andere link meer naar behoren....

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-11 09:49

Bosmonster

*zucht*

waarom gebruik je niet gewoon een Location-header als je toch met PHP bezig bent, ipv een javascript redirect weg te schrijven :?

code:
1
header ("Location: index.php");

  • f.v.b
  • Registratie: Januari 2008
  • Laatst online: 17-11 09:06
Zet javascript uit en voeg iets toe aan je winkelmandje. In de pagina die je vervolgens krijgt staat een <img src="./_lib/rotate.php.inc">.

Die afbeelding wordt opgehaald en daar worden de volgende headers mee gestuurd:

Date Sun, 10 Feb 2008 17:21:48 GMT
Server Apache/2
Location http://127.0.0.1/
Content-Length 293
Keep-Alive timeout=1, max=100
Connection Keep-Alive
Content-Type text/html; charset=iso-8859-1

Door de location header springt je browser door naar http://127.0.0.1/. Het probleem zit dus zo te zien niet in de javascript. Maar door die location header gebeuren er vervolgens wel vreemde dingen.

[ Voor 6% gewijzigd door f.v.b op 10-02-2008 18:55 ]

Don't erase all files?
       [Yes]   [No]


Verwijderd

Topicstarter
Bosmonster schreef op zondag 10 februari 2008 @ 14:47:
waarom gebruik je niet gewoon een Location-header als je toch met PHP bezig bent, ipv een javascript redirect weg te schrijven :?

code:
1
header ("Location: index.php");
Dat kan ook, maar ik heb dan wat moeite met een delay erin te zetten en dan ook nog text te laten zien. Maar het veranderen naar header(....) lost mijn probleem niet op.
Het probleem zit dus zo te zien niet in de javascript. Maar door die location header gebeuren er vervolgens wel vreemde dingen.
Ook na het uitzetten van die image rotator blijft het probleem. het doet zich voor bij ALLE links op die pagina... zelfs het menu, welk bij andere pagina's wel naar behoren werkt. (zelfde code)

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Zodra je index.php opvraagt op deze manier:

[norml]GET /logic3/nl/index.php HTTP/1.1
Host: dev.ultraserv.nl
Referer: http://dev.ultraserv.nl/logic3/nl/index.php?p=add2cart[/norml]

Dan krijg je die maffe 301 redirect. Vreemd genoeg blijft de 301 als je de "t" van "add2cart" weghaalt, maar zodra je "rt" van "add2chart" weghaalt, doet ie het probleemloos? Iets toevoegen aan de referer resulteert ook in een 301.

Heb je toevallig geen .htaccess of ander Apache-iets waarmee je ooit eens hebt lopen kloten met mod_rewrite ofzo, die checkt op de Referer-header? Want 't lijkt me sterk dat je zoiets in je index.php nog niet tegengekomen bent :+

Verwijderd

Topicstarter
Briljant, we hebben een winnaar. alleen snap ik dan nog steeds het waarom niet echt.

er staat indeed een .htaccess op www.ultraserv.nl
dev.ultraserv.nl -> www.ultraserv.nl/dev/

Tot zover. htaccess weggehaald, en ok. Maar waarom het nu weer alleen bij die functies niet werkt. Ik gebruik dezelfde $redirect met succes voor login en logout etc. heb ook functies met langere namen.

Beats me. Heel hartelijk bedankt weer!

Maar goed. Ik kan in ieder geval verder
Pagina: 1