Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

[gelöst] Fehlermeldung nach Login vermeiden

Eingetragen von Nikdilis (29)
am 14.10.2009 - 21:13 Uhr in
  • Anfängerfragen
  • Drupal 6.x

Hallo,

ich habe folgendes Problem:
ich habe eine Seite (z.B. www.example.com/seite1.php?id=3), die einen dem Link beigefügten Parameter (hier: id=3) per $_GET aufruft und dann in einer Datenbank nachschaut, ob dort ein Eintrag mit ID=3 existiert. Wenn nicht, dann erfolgt die Anzeige der Fehlermeldung "ID wurde nicht gefunden" per drupal_set_message.
Das funktioniert eigentlich auch gut.
Leider kommt es auch zur Anzeige obiger Fehlermeldung, nachdem man sich von dieser Seite aus in Drupal angemeldet hat (per Login-Block in der linken Spalte).
Wieso?
Kann ich diese Fehlermeldung nach dem Login unterdrücken und wenn ja, wie?

Vielen Dank im Voraus.
Gruß,
Nick Dilis

Anbei der grobe Aufbau des Codes:

if (isset($_GET['id'])) { $id = $_GET['id'] + 0; } else { $id = 0; }

$ergebnis = db_query('SELECT wert1, wert2 FROM {TABELLENNAME} WHERE id = %d',$id);
if ($row = db_fetch_object($ergebnis)) {
echo $row->wert1;
}

else {
drupal_set_message('Diese ID existiert nicht!','error');
}

‹ Vorhandene Site inkl. CSS in Drupal komplett einbinden Galerie in ein Buch einbinden ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Was willst Du erreichen?

Eingetragen von R.Hendel (234)
am 15.10.2009 - 12:48 Uhr

Hallo,
Ich habe nicht verstanden, was Du erreichen möchtest. Beschreib das doch mal ganz allgemein. Es würde mich wunden, wenn es dafür in Drupal nicht bereits schon eine Lösung geben würde.

Schöne Grüße,
Ralf Hendel
Ralf Hendel auf XING | comm-press.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, ok, dann versuche ich

Eingetragen von Nikdilis (29)
am 15.10.2009 - 23:56 Uhr

Hallo,

ok, dann versuche ich noch einmal, das Problem zu schildern:
1. Aufruf der seite "seite1.php?id=3" (3 ist hier ein Beispiel; der Wert ist dynamisch)
2. die Seite wird geladen, der Wert der id wird ausgelesen (id=>3), in einer Datenbank wird geschaut, ob eine Zeile existiert, in der eine id den Wert 3 hat.
Wenn ja, Ausgabe der Werte des entsprechenden Datenbankeintrags; wenn nein, Anzeige des Fehlers 'ID existiert nicht' per drupal_set_message.
3. Obiger Code funktioniert: Ein Datenbankeintrag mit ID = 3 existiert, die Zeile aus der Datenbank wird ausgegeben. Der Fehler 'ID existiert nicht' wird also logischerweise nicht angezeigt. Allerdings...
4. ... Jetzt das Problem: wenn ich als nicht angemeldeter Besucher diese Seite (seite1.php?id=3) aufgerufen habe, so wird die Seite zunächst korrekt dargestellt (Ausgabe der Zeile aus Datenbank, keine Anzeige des Fehlers 'ID existiert nicht'). Melde ich mich aber auf dieser Seite (seite1.php?id=3) über den Standard-Login-Block in der linken Menü/Navigationsleiste an, so erscheint auf der Seite (seite1.php?id=3) nach erfolgter Anmeldung plötzlich die Fehlermeldung 'ID existiert nicht' und darunter die Ausgabe der Ergebnisse aus der Datenbank.

Warum ist dies so und wie kann ich die Anzeige des Fehlers vermeiden?

Ich hoffe, dass die Formulierung verständlicher war.
Danke und Gruß,

Nick Dilis

  • Anmelden oder Registrieren um Kommentare zu schreiben

Beschreib bitte die Funktion, nicht Deinen Code

Eingetragen von R.Hendel (234)
am 16.10.2009 - 08:10 Uhr

Moin!
Beschreib doch bitte umgangsprachlich Dein gewünschtes Ziel: das, was Du erreichen möchtest, nicht Deinen Algorithmus.
Was möchtest Du auf der Seite erreichen?

Schöne Grüße,
Ralf Hendel
Ralf Hendel auf XING | comm-press.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Moin, entweder Sie

Eingetragen von Nikdilis (29)
am 16.10.2009 - 20:04 Uhr

Moin,

entweder Sie verstehen mich nicht oder ich bin zu blöde um mich richtig auszudrücken.
Ich glaube aber, daß meine Frage war, warum beschriebenes Problem auftritt.
Ich glaube auch gechrieben zu haben, daß ich auf dieser Seite gerne errreichen möchte, dass der beschriebene Fehler nach dem Login nicht mehr auftritt.
Der Algoritmus wurde aufgeführt, um das evtl. durch meinen Code verursachte Problem ausfindig zu machen.

Schöne Grüße.
Nick Dilis

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ist das ein Bug in Drupal?

Eingetragen von Nikdilis (29)
am 19.10.2009 - 11:09 Uhr

Hallo zusammen,

ist das beschriebene Problem ein Bug in Drupal?
Ist der beschriebene Fehler bei anderen auch schon aufgetreten?
Was passiert bei einem Login in Drupal mit übergebenen Parametern?
Wie kann ich die Anzeige der Fehlermeldung nach eínem Login von dieser Seite aus vermeiden?

Danke und Gruß,
Nick Dilis

  • Anmelden oder Registrieren um Kommentare zu schreiben

Meldung

Eingetragen von stBorchert (6003)
am 19.10.2009 - 11:48 Uhr
Nikdilis schrieb

ist das beschriebene Problem ein Bug in Drupal?

Nein.

Nikdilis schrieb

Ist der beschriebene Fehler bei anderen auch schon aufgetreten?

Nicht, das ich wüsste. Es sei denn, jemand verwendet exakt den von Dir gezeigten Code.

Nikdilis schrieb

Was passiert bei einem Login in Drupal mit übergebenen Parametern?

Sie werden ausgewertet.

Nikdilis schrieb

Wie kann ich die Anzeige der Fehlermeldung nach eínem Login von dieser Seite aus vermeiden?

Ändere Deinen Code dahingehend, dass die Fehlermeldung nicht angezeigt wird, wenn kein Parameter übergeben wurde.
Momentan gibst Du die Fehlermeldung nämlich auch aus, wenn der Parameter "id" überhaupt nicht existiert.
Setz die Klammerung richtig, dann funktioniert das auch.

hth,

 Stefan

--
sei nett zu Deinem Themer

  • Anmelden oder Registrieren um Kommentare zu schreiben

Verstehe ich nicht ganz

Eingetragen von Nikdilis (29)
am 19.10.2009 - 13:16 Uhr

Hallo Stefan,

zunächst danke für Dein Posting.
Alllerdings habe ich mit folgender Zeile doch definiert, daß id => 0 ist, falls im Link der Parameter id nicht aufgeführt und somit nicht ausgelesen werden kann.
Wenn also in der Datenbank keine id mit dem Wert 0 vorkommt, müsste die Fehlermeldung angezeigt werden, nicht aber die Werte aus der Datenbank. Beides zusammen ist doch mit dem if else ausgeschlossen.

Könntest Du mir den Beispielcode bitte so abändern, dass er aus Deiner Sicht funktionieren sollte?
Tausend Dank!
Grüße,

Nick Dilis

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dein Code ist irgendwie sehr

Eingetragen von stebeg (463)
am 19.10.2009 - 13:29 Uhr

Dein Code ist irgendwie sehr verwirrend ....

<?php
if (isset($_GET['id']))
{
 
$id = $_GET['id'] + 0;
}
else
{
 
$id = 0;
}

$ergebnis = db_query('SELECT wert1, wert2 FROM {TABELLENNAME} WHERE id = %d',$id);
if (
$row = db_fetch_object($ergebnis)) {
  echo
$row->wert1;
}

else {
 
drupal_set_message('Diese ID existiert nicht!','error');
}
?>

Warum so kompliziert, warum nicht einfach

<?php
if (isset($_GET['id']))
{
 
$id = $_GET['id'] + 0;
 
$ergebnis = db_query('SELECT wert1, wert2 FROM {TABELLENNAME} WHERE id = %d',$id);
  if (
$row = db_fetch_object($ergebnis))
  {
    echo
$row->wert1;
  }
}
else
{
 
drupal_set_message('Diese ID existiert nicht!','error');
} 
?>

wozu musst du die ID noch auf Null setzen. Und wenn keine ID übergeben wird, wieso soll dann trotzdem eine Datenbank-Abfrage gemacht werden? Das sind so die Frage nach dem Sinn dieses Codes, der schon mehrmal hier erfragt wurde.

Edit: Worin liegt eigentlich der Sinn von

<?php
$id
= $_GET['id'] + 0;
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Meldung

Eingetragen von stBorchert (6003)
am 19.10.2009 - 13:40 Uhr
stebeg schrieb

Dein Code ist irgendwie sehr verwirrend ....

Dafür tut Deiner genau das, was er nicht soll :-). Und zwar wird die Fehlermeldung nur dann angezeigt, wenn keine Id übergeben wurde. Sie soll (vermute ich jetzt einfach mal) jedoch nur dann angezeigt werden, wenn
a) eine Id übergeben und
b) diese Id nicht gefunden wurde.

Also so:

<?php
if (isset($_GET['id']) && is_numeric($_GET['id']))
{
 
$id = $_GET['id'];
 
$ergebnis = db_query('SELECT wert1, wert2 FROM {TABELLENNAME} WHERE id = %d',$id);
  if (
$row = db_fetch_object($ergebnis)) {
    echo
$row->wert1;
  }
  else {
   
drupal_set_message('Diese ID existiert nicht!','error');
  }
}
?>

stebeg schrieb

Edit: Worin liegt eigentlich der Sinn von

<?php
$id
= $_GET['id'] + 0;
?>

Das soll eine Konvertierung des übergebenen Wertes nach int erwirken. Besser (und definitiv sicherer) ist jedoch eine Überprüfung mittels is_numeric.

hth,

 Stefan

--
sei nett zu Deinem Themer

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, Tausend Dank,

Eingetragen von Nikdilis (29)
am 19.10.2009 - 14:29 Uhr

Hallo Stefan,

Tausend Dank, ich glaube so funktioniert das (Getestet wird später).
Viele Grüße,

Nick Dilis

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hat so geklappt, Danke! [k.T.]

Eingetragen von Nikdilis (29)
am 19.10.2009 - 16:43 Uhr

Hat so geklappt, Danke! [k.T.]

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 1 Tag
  • Hey danke
    vor 2 Wochen 2 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 11 Stunden
  • Da scheint die Terminologie
    vor 3 Wochen 15 Stunden
  • Kannst doch auch alles direkt
    vor 3 Wochen 4 Tagen
  • In der entsprechenden View
    vor 3 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 4 Tagen
  • gelöst
    vor 6 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 31 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association