olli: if verschachteln?

hallo, ich habe ein login tutorial benutzt und es an meine zwecke angepasst. ( bin leider nicht der guru ;) )

so sieht ein teil davon aus:

if (mysql_num_rows ($result) > 0)
{
  // Benutzerdaten in ein Array auslesen.
  $data = mysql_fetch_array ($result);

// Sessionvariablen erstellen und registrieren
  $_SESSION["user_id"] = $data["id"];
  $_SESSION["user_nickname"] = $data["benutzername"];

header ("Location: intern.php");
}
else
{
  header ("Location: form_login.php?fehler=1");
}

mir geht es um den letzten teil, wenn der benutzer sich erfolgreich eingeloggt hat,  soll er in dem fall auf die intern.php, soweit klar, wenn aber eine bestimmte variable mit JA gefüllt ist ( steht in der DB ) soll er vorher noch auf eine andere seite, auf welcher erklärungen stehen, und dort erst nach bestätigung auf die intern.php

nun habe ich mir einiges über if und else und elseif durchgelesen, und bin völlig verwirrt. könnte mir evtl. einer von euch nen tipp geben?

danke olli

  1. Hallo olli,

    if (mysql_num_rows ($result) > 0)
    {
      // Benutzerdaten in ein Array auslesen.
      $data = mysql_fetch_array ($result);

    // Sessionvariablen erstellen und registrieren
      $_SESSION["user_id"] = $data["id"];
      $_SESSION["user_nickname"] = $data["benutzername"];

    // Wenn 'mein_ja_nein_feld' 'JA' enthaelt
        if ($data['mein_ja_nein_feld'] == 'JA') {

    // Zur Zwischenschaltseite
            // Du solltest den absoluten URI verwenden, siehe http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30
            header('Location: ' . $_SERVER['HTTP_HOST'] . '/zwischenschalteseite.php');

    } else {

    header ("Location: intern.php");

    }

    }
    else
    {
      header ("Location: form_login.php?fehler=1");
    }

    Beste Gruesse

    Jan

    1. Hallo nochmal,

      sorry, da fehlt das Protokoll:

      header('Location: ' . $_SERVER['HTTP_HOST'] . '/zwischenschalteseite.php');

      header('Location: http://' . $_SERVER['HTTP_HOST'] . '/zwischenschalteseite.php');

      Beste Gruesse

      Jan

    2. Hallo olli,

      if (mysql_num_rows ($result) > 0)
      {
        // Benutzerdaten in ein Array auslesen.
        $data = mysql_fetch_array ($result);

      // Sessionvariablen erstellen und registrieren
        $_SESSION["user_id"] = $data["id"];
        $_SESSION["user_nickname"] = $data["benutzername"];

      // Wenn 'mein_ja_nein_feld' 'JA' enthaelt
          if ($data['mein_ja_nein_feld'] == 'JA') {

      // Zur Zwischenschaltseite
              // Du solltest den absoluten URI verwenden, siehe http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30
              header('Location: ' . $_SERVER['HTTP_HOST'] . '/zwischenschalteseite.php');

      } else {

      header ("Location: intern.php");

      }

      }
      else
      {
        header ("Location: form_login.php?fehler=1");
      }

      Beste Gruesse

      Jan

      hallo vielen dank für deine antwort.

      ich habe es jetzt mal in kurzform reingebracht. so wie ich es gemacht habe funktioniert es leider nicht

      if ($data['user'] == 'ja') {

      // Zur Zwischenschaltseite
                     header("Location: erklärung.php");

      } else {

      header ("Location: intern.php");
      }

      }
      else
      {
        header ("Location: form_login.php?fehler=1");
      }

      habe deinen hinweis auf
      $_SERVER['HTTP_HOST'] . '/zwischenschalteseite.php');
      nicht verstanden. wo nehme ich denn $_server etc her?

      auf jedenfall lande ich immer noch auf der intern.php

      trotzdem danke, bisher

      1. Hallo olli,

        if (mysql_num_rows ($result) > 0)
        {
          // Benutzerdaten in ein Array auslesen.
          $data = mysql_fetch_array ($result);

        // Sessionvariablen erstellen und registrieren
          $_SESSION["user_id"] = $data["id"];
          $_SESSION["user_nickname"] = $data["benutzername"];

        // Wenn 'mein_ja_nein_feld' 'JA' enthaelt
            if ($data['mein_ja_nein_feld'] == 'JA') {

        // Zur Zwischenschaltseite
                // Du solltest den absoluten URI verwenden, siehe http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30
                header('Location: ' . $_SERVER['HTTP_HOST'] . '/zwischenschalteseite.php');

        } else {

        header ("Location: intern.php");

        }

        }
        else
        {
          header ("Location: form_login.php?fehler=1");
        }

        Beste Gruesse

        Jan

        hallo vielen dank für deine antwort.

        ich habe es jetzt mal in kurzform reingebracht. so wie ich es gemacht habe funktioniert es leider nicht

        if ($data['user'] == 'ja') {

        // Zur Zwischenschaltseite
                       header("Location: erklärung.php");

        } else {

        header ("Location: intern.php");
        }

        }
        else
        {
          header ("Location: form_login.php?fehler=1");
        }

        habe deinen hinweis auf
        $_SERVER['HTTP_HOST'] . '/zwischenschalteseite.php');
        nicht verstanden. wo nehme ich denn $_server etc her?

        auf jedenfall lande ich immer noch auf der intern.php

        trotzdem danke, bisher

        ach ich dussel ;) habs
        hier lag der fehler

        if ($data['user'] == 'ja')

        das feld heißt neu und nicht user ;)

        danke

        1. hi,

          ach ich dussel ;)

          über dieser aussage ein fullquote zu bringen, bestätigt diese zwar sehr schön ;-), ist aber trotzdem nicht erwünscht.

          sieh dir diesbezüglich bitte mal </faq/#Q-09a> an.

          gruss,
          wahsaga

      2. Hallo olli,

        ich habe es jetzt mal in kurzform reingebracht. so wie ich es gemacht habe funktioniert es leider nicht

        Du musst zwischen Gross- und Kleinschreibung unterscheiden.
        Was in der Datenbank grossgeschrieben ist (JA) muss auch mit einer grossgeschriebenen Zeichenkette verglichen werden. Besser noch: Du wandelst das Datenbankergebnis erst in Kleinschreibung um (http://www.php.net/strtolower).

        if ($data['user'] == 'ja') {

        if (strtolower($data['user']) == 'ja') {

        Und bitte vermeide Umlaute in URLs (http://www.faqs.org/rfcs/rfc1738.html

        header("Location: erklärung.php");

        header('Location: http://' . $_SERVER['HTTP_HOST'] . '/erkl%E4rung.php'); // besser: Datei umbenennen

        habe deinen hinweis auf
        $_SERVER['HTTP_HOST'] . '/zwischenschalteseite.php');
        nicht verstanden. wo nehme ich denn $_server etc her?

        $_SERVER ist ein superglobaler Array (http://www.php.net/variables.predefined) und seit PHP 4.1.0 automatisch verfuegbar.

        Beste Gruesse

        Jan