Ankündigung

Einklappen
Keine Ankündigung bisher.

[header] Browser umleiten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [header] Browser umleiten

    Hallo!

    Ich möchte den Browser mit php dazu zwingen eine andere Internetseite zu laden, wenn eine bestimmte Stelle im Code erreicht wird.

    Dazu habe ich die Funktion header gefunden.

    Ich mache das dann bei mir hier am Rechner so:

    Code:
    if (bla)
    {
      header ("Location:D:\Programme\xampp\htdocs\spielerei\Newssystem\loeschen.php");
       exit;
    }
    es passiert aber gar nix. Auch wenn ich den Pfad so änder, dass es ihn nicht gibt, passiert rein gar nichts.

    Woran liegt das? Weil header irgendwie immer als erstes gesendet werden?

    Wäre über jede Hilfe dankbar,
    wimme

  • #2
    hm wo kommt denn der Fehler und was soll das ???

    PHP-Code:
    <?php
    if (bla
    ?>
    Fehlermeldung ???

    Irgendwas ...

    Kommentar


    • #3
      D:\Programme\xampp\htdocs\spielerei\Newssystem\loe schen.php
      Lokaler Pfad - am Webserver vorbei. Wer interpretiert dann das php Skript?


      PHP-Code:
      error_reporting(E_ALL);
      ini_set('display_errors'true); 
      an den Anfang des Skripts setzen.

      Kommentar


      • #4
        was meinst du damit, "wer interpretiert das php Skript"?

        es gibt keine Fehlermeldung. Auch wenn alle Fehler angezeigt werden. Die If-Kontrollstruktur wird aber ausgeführt, somit müsste auch header ausgeführt werden. Es passiert aber rein gar nichts. Kann das an den php Einstellungen liegen oder irgend etwas?

        edit: wenn ich den header so änder:
        PHP-Code:
        header("Location: [url]http://www.web.de/[/url] "); 
        passiert auch nichts. Also kann es wohl nicht am Pfad liegen, oder?
        Gruß,
        Wimme

        Kommentar


        • #5
          entweder hast du Bruchpilots Code-Schnipsel noch nicht eingebaut oder dein
          Skript erreicht ganz einfach die Stelle nicht, an der dein header('Location:
          ...'); exit; ausgeführt wird.

          Als Adresse ist eine Web-Adresse anzugeben, konform möglichst in absoluter
          Form.

          Kommentar


          • #6
            die Stelle erreicht es auf jeden Fall. Habe es mit einer echo Anweisung überprüft, außerdem bricht das Skript ab (exit).

            Was meint du mit "Bruchpilots Code-Schnipsel"?

            ich habe nun mal die Anweisung zu Testzwecken ganz an den Anfang des Skripts geschrieben, dort funktioniert sie.

            Wimme

            Kommentar


            • #7
              Code und Werte der verwendeten Variablen zeigen.

              Kommentar


              • #8
                ich denke, dieser Teil reicht hoffentlich.
                im Array $array_id werden alle ids von Newsbeiträgen gespeichert. $anzahl_news enthält also die Anzahl der Newsbeiträge (in meinem Beispiel hier momentan 2).
                Der Array Key startet bei Null und erhöht sich immer um eins.

                Die Variable $_POST['loeschen' . ID] erhält den Wert löschen, wenn ein obiges Formular ausgeführt wird.


                PHP-Code:
                $anzahl_news count($array_id);
                    for (
                $k 0$k $anzahl_news$k++)
                    {
                        if(
                $_POST['Loeschen' $array_id[$k]] == "loeschen")
                        {
                            echo 
                "hier!!!!";
                            
                header("Location: [url]http://www.web.de/[/url] "); 
                            exit;
                        }
                    } 
                Wimme

                edit: es liegt wohl hieran, nehm ich an, wie ich ja auch schon oben mal vage vermutet hatte:
                Beachten Sie, dass header() aufgerufen werden muss, bevor eine Ausgabe gesendet wurde, egal ob dies normale HTML Tags, leere Zeilen in einer Datei oder von PHP sind.
                Versteh dann aber nicht, warum nicht so ein Fehler kommt "Header already sent by..." oder sowas. Muss ich jetzt wirklich mit "ob_start" und so arbeiten? Gibt es keine Möglichkeit den Browser an einer beliebigen Stelle im Code umzuleiten?

                PS. Ich weiß dass das Skript ziemlich doof ist, aber ich übe/probiere halt daran etwas rum.

                Kommentar


                • #9
                  Dann zeig doch bitte mal den Code rund um das eingefügte
                  error_reporting(E_ALL);
                  ini_set('display_errors', true);
                  bzw bekommst Du die Meldung headers already sent ?

                  Kommentar


                  • #10
                    ok, ich geb dir mal den ganzen Code, aber nicht lachen, bin schließlich Anfänger. Und wie ich bereits gesagt habe, weiß ich, dass das ganze sehr umständlich ist.

                    PHP-Code:
                    <?php
                        error_reporting
                    (E_All);
                        
                    ini_set('display_errors'true);
                    ?>

                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                    <html xmlns="http://www.w3.org/1999/xhtml">
                    <head>
                    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                    <title>News</title>
                    <link rel="stylesheet" type="text/css" href="stylesheets.css">
                    </head>
                    <html>
                    <body>


                    <?php
                        define
                    ('HOST',bla);
                        
                    define('USER',bla);
                        
                    define('PASS',bla);
                        
                    define('DB',bla);
                        
                        @
                    mysql_connect(HOSTUSERPASS) OR die("Konnte nicht zur Datenbank verbinden! Grund: " mysql_error());
                        @
                    mysql_select_db(DB) OR die("Auswahl der Datenbank fehlgeschlagen! Grund: " mysql_error());
                        
                        
                    //Verbindung nun vollständig aufgebaut
                        
                        
                    $sql "SELECT 
                                    ID,
                                    Titel,
                                    Autor,
                                    Datum,
                                    Inhalt 
                                FROM
                                    neuigkeiten
                                ORDER BY
                                    Datum DESC;"
                    ;
                                    
                        
                    $result mysql_query($sql) OR die(mysql_error());
                        
                    $array_id = array(); //Array für die IDs
                        
                    $i          0;          //Array-Key
                        
                        
                    if(mysql_num_rows($result) != 0)     //liefert die Anzahl der Datensätze im Ergebnis
                        
                    {
                            while(
                    $datensatz mysql_fetch_assoc($result)) //Wird false wenn keine Datensätze mehr
                            
                    {
                    ?>
                              <table border="1" width="50%" align="center">
                                  <tr> <td> <?php echo $datensatz['Titel']; ?></td> 
                                     <td> <?php echo "Autor: " $datensatz['Autor']; ?></td> 
                                     <td> <?php echo $datensatz['Datum']; ?></td> 
                                </tr>
                                
                                  <tr> 
                                    <td colspan="3"><?php echo $datensatz['Inhalt']; ?> </td> 

                                </tr>
                                    
                                <tr> <form method="post" action="index.php">
                                    <td><input name="<?php echo "Loeschen".$datensatz['ID']; ?>" type="submit" value="loeschen" /> </td> 
                                     <td><input name="<?php echo "Bearbeiten".$datensatz['ID']; ?>" type="submit" value="bearbeiten" />  </td> 
                                    </form>
                                </tr>  
                                
                              </table>
                              
                     
                     

                    <?php

                                $array_id
                    [$i] = $datensatz['ID'];        //alle IDs werden in einem Array gespeichert.
                                
                    $i++;
                            } 
                    //of while
                        
                    }    // of if
                        
                    else
                        {
                            echo 
                    "Es sind keine Neugikeiten vorhanden! 

                    "
                    ;        
                        }        
                            
                        
                    $anzahl_news count($array_id);
                        for (
                    $k 0$k $anzahl_news$k++)
                        {
                            if(
                    $_POST['Loeschen' $array_id[$k]] == "loeschen")
                            {
                                echo 
                    "hier!!!!";
                                
                    header("Location: [url]http://www.web.de/[/url] "); // D:\Programme\xampp\htdocs\spielerei\Newssystem\loeschen.php
                                
                    exit;
                            }
                        }
                    ?>

                    [url="hierbla.php"]Newseintrag hinzufügen[/url]
                    </body>
                    </html>
                    headers already sent by - Fehler bekomme ich nicht

                    Kommentar


                    • #11
                      Du sendest aber einen.
                      Die Skript-Logik kommt ganz nach oben, über die Ausgabe!

                      Kommentar


                      • #12
                        wenn ich nun die for-schleife an den Anfang, vor eine Ausgabe, schiebe, habe ich aber das Problem, dass ich mein array nicht bekannt ist und ich den irgendwie bei erneuten Aufruf mit übertragen müsste...

                        was mich sehr wundert gerade, dass das Ding kaum Fehler ausspuckt. Normalerweise ist das ja sehr sensibel mit error_reporting(E_All); und gibt auch Notices aus, macht es aber gar nicht. Müsste mir doch eigentlich sagen, dass er den Array dann beim erneuten Aufruf oben nicht kennt...

                        Wimme

                        Kommentar


                        • #13
                          E_ALL

                          Kommentar

                          Lädt...
                          X