Rechteverwaltung und weitere Links

Schon festgestellt? Dem Forum sind gerade alle Interaktionsmöglichkeiten genommen. :(

Mehr dazu unter: Abstimmung über das Forum

  • Ich erhalte folgende Fehlermeldung:

    Warning: Cannot modify header information - headers already sent by (output started at /mnt/web314/d0/58/57642758/htdocs/dv-vv/Login101.php:62) in /mnt/web314/d0/58/57642758/htdocs/dv-vv/Login101.php on line 94

    und anschließend springt er auf den Hinweis:

    Bitte korrekte Zugangsdaten eingeben!

    Und das ist der Script:

    if(isset($_POST['aktion']) and $_POST['aktion'] == 'einloggen' )

    {

    if(isset($_POST['nutzerid']) and trim($_POST['nutzerid']) != ''

    and

    isset($_POST['kennwort']) and trim($_POST['kennwort']) != ''

    )

    {

    // überprüfen, ob Zugangsdaten korrekt sind

    $nutzerid_formular = trim($_POST['nutzerid']);

    $kennwort_formular = trim($_POST['kennwort']);


    $zugang = $db->prepare("SELECT id, nutzerid, kennwort, rechte, nachname

    FROM svzugang WHERE nutzerid=? && kennwort=? ");


    $zugang->bind_param('ss', $nutzerid_formular, $kennwort_formular);

    $zugang->execute();

    $zugang->bind_result($id, $nutzerid, $kennwort, $rechte, $nachname);


    while ($zugang->fetch()) {


    if ($rechte == "TPO")

    header ('Location: https://www.google.de');


    if ($rechte == "GAST"){

    header('Location: eingeloggtTPDSV.php');

    }

    }

    // var_dump($zugang);


    // echo "<p>Treffer $nutzerid / $kennwort / $rechte / $nachname: ". $zugang->num_rows ."</p>";


    if ( $zugang->num_rows == 1 )

    {

    $_SESSION['einloggen']['nutzerid'] = $nutzerid;

    $_SESSION['einloggen']['rechte'] = $rechte;

    }

    else

    {

    echo "<p>Bitte korrekte Zugangsdaten eingeben!</p>";

    unset($_SESSION['einloggen']['nutzerid']);

    unset($_SESSION['einloggen']['rechte']);

    }

    }

    else

    {

    echo "<p>Bitte Formular komplett ausfüllen</p>";

    }

    }

    if (!isset($_SESSION['einloggen']['rechte']) )

    {

    ?>

  • google -> Warning: Cannot modify header information

    Zitat

    Ungefähr 6.790.000 Ergebnisse

    Reicht das wirklich nicht? :(


    Vor der header-Anweisung darf nichts ausgegeben werden, kein Lerrzeichen, keine Leerzeile und auch keinerlei HTML-Code. Wo das bei dir aber passiert, verrät dir PHP sogar:

    Zitat

    output started at /mnt/web314/d0/58/57642758/htdocs/dv-vv/Login101.php:62

    Außerdem sollte nach dem header-Aufruf ein exit(); folgen.


    Und: unformtierten Quellcode guckt sich niemand gerne an und dann ist der Quellcode auch noch nicht mal vollständig. :(

  • Was hast du daran nicht verstanden?

    Zitat

    Vor der header-Anweisung darf nichts ausgegeben werden, kein Leerzeichen, keine Leerzeile und auch keinerlei HTML-Code

    Vor deiner header-Anweisung kommt massenhaft HTML-Code! X/


    Und informiere dich bitte in Sachen Affenformular und EVA-Prinzip, dein Script ist komplett falsch aufgebaut

  • Hallo zusammen,

    selbst auf die Gefahr, dass ich Euch nerve, versuche ich es nochmals. Beiliegende Login Datei bringt mir auf der Remote Site bei Strato nach dem Einloggen mit korrekten Daten nur den Hinweis "Bitte korrekte Zugangsdaten eingeben!" (aus Zeile 117) und die korrekten Daten aus der MySQL DB: "32, HW, 123, TPO, , , HolgerWachsmann".Wenn ich die gleiche Login Datei mit Localhost (XAMPP) benutze funktioniert die Header Funktion und die Weiterleitung auf die gewünschte Seite erfolgt.Woran kann das liegen?Vielen Dank im Voraus für eine hilfreiche Antwort.LG - Holger


    Dateien

    • Login101.zip

      (2,47 kB, 4 Mal heruntergeladen, zuletzt: )
  • Bei Php werde ich keine großartigen Lösungen geben.

    Aber wenn du mal deine if abfrage ankuckst


    Code
    1. if (isset($_SESSION['eingeloggt']['rechte']) and $_SESSION['eingeloggt'] == 'TPO') {
    2. header('Location: http://www.dv-vv.de/eingeloggtTPOSV.php');
    3. }

    Erstens sehe ich nicht das vorher die Session gesetzt ist .

    Also kopiere ich die Session davor irgendwo , wo sie nach Kennwort abfrage hinsollte



    Wenn man dann den echo davor klatscht kriegt man nur ein array


    array=='TPO';

    Passst natürlich nicht.


    Ich wüßte schon wie man das alles ändern könnte das es geht , doch bei Php könnte ich auch noch voll daneben liegen und werde nur das posten was meine Meinung ist

  • Hey,


    SV-Wachsmann : Bitte füge zukünftig deinen Code hier in die Code Tags (</>) und füge diese nicht als Zip oder Anlage bei.


    Dort muss ein Fehler vorhanden sein. Schaue dir dazu dieses Tutorial an : Benutzerverwaltung. Dieses wird dir aufjedenfall weiterhelfen. Wenn du dann immernoch den Fehler hast dann debugge deinen Code mit diesem Leitfaden. Wenn du dann immernoch nicht weiter kommst poste deinen Code mit der entsprechenden Fehlermeldung.

  • Hallo alle zusammen,

    ausdrücklich möchte ich mich bei Euch allen für die gegebenen Tipps und Hinweise bedanken. Ich habe alle ausprobiert und bin aber nicht wirklich weitergekommen. Nachdem ich Neuling auf dem Sektor php bin, will ich auch nicht schlau daherreden. Aber was mich halt so stutzig macht ist, dass in XAMPP localhost alles so funktioniert, wie ich es mir vorstelle, aber real auf dem Strato Server die header location Weiterleitung nicht geht. Kann es sein, dass es an der php version liegt, die ich in Strato eingestellt habe. Weil ich noch mit einem anderen Hilfsprogramm (NetObjectsFusion) eine Webseite erstellt habe, benutze ich bei Strato die php-version 5.6. Mit dem Erstellen der gerade im Entstehen befindlichen Website soll dann dies "alte" mit NOF erstellte Seite gelöscht werden und ich könnte auf php-version 7.2 umstellen.

    Für alle Eure Antworten hier bereits mein herzliches Danke.


    Und hier nochmals mein Script, dass wie gesagt bei XAMPP einwandfrei funktioniert:


    <?php

    session_start();

    require 'inc/db.php';

    ?>


    <!DOCTYPE html>

    <html><!-- InstanceBegin template="/Templates/Hauptvorlage.dwt" codeOutsideHTMLIsLocked="false" -->


    <head>


    <meta charset="utf-8" />

    <!-- InstanceBeginEditable name="doctitle" -->

    <title>Login</title>

    <!-- InstanceEndEditable -->

    <link href="Stylesheets/layout.css" rel="stylesheet" type="text/css" />

    <link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />

    <style type="text/css">

    a:hover {

    color: #FFFFFF;

    }

    a:active {

    color: #FFFFFF;

    }

    </style>

    <!-- InstanceBeginEditable name="head" -->

    <!-- InstanceEndEditable -->

    <script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>

    </head>


    <body bgcolor="#FFFFFF">


    <div class="container">

    <div ><!-- end .header -->

    <table width="100%" align="center">

    <tr class="Hintergrundfarbe">

    <th width="25%" align="center" valign="middle" scope="col"><div align="center" class="Hintergrundfarbe"><img src="Bilder/TPO.jpg" width="200" height="126">

    </div></th>

    <th width="45%" scope="col" ><span class="Verdana220blaufm"> 1.ARGE TPO e.V.</span><br>

    <span class="Verdana120blaufm">technische Prüforganisation<br></span>

    <span class="Verdana80blaufm">amtlich anerkannte Sachverständigenorganisation <br>

    </span><span class="Verdana60blaufm">Anerkennung durch Landesamt für Umwelt<br>

    § 52 AwSV - BYLfU 68-4566-17722-2019 </span></th>

    <th width="25%" scope="col"><div align="center"><img src="Bilder/Sicherheit.jpg" width="220" height="92" /></div></th>

    </tr>

    </table>

    <ul id="MenuBar1" class="MenuBarHorizontal">

    <li><a href="Fachbetriebe.html">Fachbetriebe</a> </li>

    <li><a href="Taetigkeiten.html" class="MenuBarItemSubmenu">T&auml;tigkeiten</a>

    <ul>

    <li><a href="Heizoeltank.html">Heiz&ouml;ltank</a></li>

    </ul>

    </li>

    <li><a href="Sachverstaendige.html">Sachverst&auml;ndige</a></li>

    <li><a href="Seminare.html">Seminare</a></li>

    <li><a href="Recht.html">Recht</a></li>

    <li><a href="index.html">Home</a></li>

    </ul>

    </div>

    <div class="content"><!-- InstanceBeginEditable name="Hauptvorlage" -->

    <h1 class="header&Uuml;berschrift1">Login</h1>

    <p>&nbsp;</p>

    <p class="verdana18">Bitte loggen Sie sich mit Ihren Zugangsdaten ein, damit Sie auf die gesicherten Seiten der Sachverst&auml;ndigen Organisation 1. ARGE TPO e.V. zugreifen k&ouml;nnen.</p>

    <p class="verdana18">&nbsp;</p>


    <div id="einloggbereich">

    <?php


    if(isset($_POST['aktion']) and $_POST['aktion'] == 'ausloggen' )

    {

    echo "<p>Sie wurden ausgeloggt</p>";

    unset ($_SESSION['eingeloggt']['nutzerid']);

    unset ($_SESSION['eingeloggt']['rechte']);

    }



    if(isset($_POST['aktion']) and $_POST['aktion'] == 'einloggen' )

    {

    if(isset($_POST['nutzerid']) and trim($_POST['nutzerid']) != ''

    and

    isset($_POST['kennwort']) and trim($_POST['kennwort']) != ''

    )

    {

    // überprüfen, ob Zugangsdaten korrekt sind

    $nutzerid_formular = trim($_POST['nutzerid']);

    $kennwort_formular = trim($_POST['kennwort']);


    $zugang = $db->prepare("SELECT id, nutzerid, kennwort, rechte, anrede, vorname, nachname FROM svzugang WHERE nutzerid=? && kennwort=? ");


    $zugang->bind_param('ss', $nutzerid_formular, $kennwort_formular);

    $zugang->execute();

    $zugang->bind_result($id, $nutzerid, $kennwort, $rechte, $anrede, $vorname, $nachname);


    while ($zugang->fetch()) {

    echo "<li> $id, $nutzerid, $kennwort, $rechte, $anrede, $vorname, $nachname</li>";

    }



    if (isset($_SESSION['eingeloggt']['rechte'])

    and $_SESSION['eingeloggt'] == 'TPO') {

    header('Location: http://www.dv-vv.de/eingeloggtTPOSV.php');

    }


    if (isset($_SESSION['eingeloggt']['rechte'])

    and $_SESSION['eingeloggt'] == 'GAST') {

    header('Location: http://www.dv-vv.de/eingeloggtTPDSV.php');

    }



    // echo "<p>Treffer $nutzerid / $kennwort: ". $zugang->num_rows ."</p>";


    if ( $zugang->num_rows == 1 ) {

    $_SESSION['eingeloggt']['nutzerid'] = $nutzerid;

    $_SESSION['eingeloggt']['rechte'] = $rechte;

    }

    else

    {

    echo "<p>Bitte korrekte Zugangsdaten eingeben!</p>";

    unset($_SESSION['eingeloggt']['nutzerid']);

    unset($_SESSION['eingeloggt']['rechte']);

    }

    }

    else

    {

    echo "<p>Bitte Formular komplett ausfüllen</p>";

    }

    }


    if (!isset($_SESSION['einloggen']['rechte']) )

    {

    ?>

    <form name="form1" action="" method="post" >

    <p>

    <label for="nutzerid" class="Formularspacer">Benutzername:</label>

    <input name="nutzerid" type="text" class="Formulardesign" id="nutzerid" tabindex="1">

    </p>

    <p>

    <label for="kennwort" class="Formularspacer">Passwort:</label>

    <input name="kennwort" type="text" class="Formulardesign" id="kennwort" tabindex="2">

    </p>

    <p>

    <input type="hidden" name="aktion" value="einloggen">

    <input type="submit" value="Einloggen" tabindex="3">

    </p>

    </form>


    <?php

    }

    else

    {

    ?>


    <form action="" method="post">

    <input type="hidden" name="aktion" value="ausloggen">

    <input type="submit" value="Ausloggen">

    </form>

    <?php

    }

    ?>


    </div>


    <p class="verdana18">&nbsp;</p>

    <!-- InstanceEndEditable -->

    <p>&nbsp;</p>

    <!-- end .content --></div>

    <div class="footer">

    <p class="verdana20f"><strong>1. ARGE TPO e.V. - Am Seukenbach 1, 90556 Seukendorf</strong></p>

    <p><span class="verdana14">Telefon: 0911 9648238 - Telefax: 0911 - 9648239</span></p>

    <p><span class="verdana14">Email:</span> <a href="mailto:verwaltung@tpo-online.de"><span class="Links">verwaltung@tpo-online.de</span></a><span class="verdana14"> &#8226; Website: http://www.tpo-online.de</span></p>

    <p>

    &#8226;

    <a href="Internas.html"><span class="Links">Internas</span></a> &#8226;

    <a href="Kontakt.html" ><span class="Links">Kontakt</span></a> &#8226;

    <a href="Impressum.html"><span class="Links">Impressum</span></a> &#8226;

    <a href="Login101.php"><span class="Links">SV-Zugang</span></a> &#8226;<br />

    </p>

    </div>

    <!-- end .container --></div>

    <script type="text/javascript">

    var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"../SpryAssets/SpryMenuBarDownHover.gif", imgRight:"../SpryAssets/SpryMenuBarRightHover.gif"});

    </script>

    </body>

    <!-- InstanceEnd --></html>

  • Ich bin raus! Begründung:

    1. Wiederholt unformatierten Quellcode gepostet
    2. Immer noch sowohl Posting #18 als auch Posting #26 komplett ignoriert!!

    Wenn du Hinweise ignorierst, dann wundere dich nicht, dass dir niemand mehr helfen will. Dein Script ist vom Aufbau her schon komplett falsch! Was glaubst du wohl, warum ich das geschrieben habe:

    Zitat

    Und informiere dich bitte in Sachen Affenformular und EVA-Prinzip

    Nichts davon hast du gemacht, also was soll dieser Thread noch hier?


    Und ja, es gibt Unterschiede zwischen XAMPP und einem richtigen Webserver. XAMPP ist m.M.n. schlecht konfiguriert und lässt solch "schlampige" Programmierung zu.

  • Ich habe alle ausprobiert und bin aber nicht wirklich weitergekommen. Nachdem ich Neuling auf dem Sektor php bin, will ich auch nicht schlau daherreden.

    Zeig doch mal deinen Code den du da mit den änderungen gemacht hast.

    Wenn du irgendwelche änderungen gemacht hättest dann würde es auch gehen.

    Ich hatte nur das geändert was ich geschrieben habe und es ging schon , auch wenn alles andere ( was noch angesprochen wurde ) noch nicht Perfekt ist.


    Ich könnte es ja mal online setzen dann siehst du das es da auch geht .

    Strato Kunde bin ich auch ich weiß das es da auch sofort gehen wird ohne was zu ändern.


    Achso.

    Du Sagst Strato ?

    Bei den Einloggen von Sql darf kein localhost stehen .

    Bei mir geht es nur wenn ich die Server Adresse hinschreibe.

    Das wird bei dir wohl auch ein Problem sein.


    Und JA , stell auf Php 7 um.

  • Hallo zusammen,

    in den letzten Tagen habe ich alles versucht. Alle Eure Vorschläge, für die ich herzlich danke (nachdem keiner zum Erfolg geführt hat, wieder die ursprüngliche Fassung verwendet), habe mir Lernvideos rein gezogen und dicke Fachbücher durchstudiert ohne dass ich den gewünschten Erfolg erzielt habe.

    Jetzt habe ich mit var_dump versucht Fehler auszulesen und dabei aus meiner Sicht folgendes interessantes entdeckt, was evtl. die Fehlerursache sein könnte und hier bitte ich um Eure Hilfe.


    Nochmals kurz das Problem:

    Ich möchte mit einem Login Script mich auf der MySQL DB anmelden, dort auch entsprechende Rechte auslesen (alles vorher von mir in der DB angelegt) so funktioniert die gewünschte Weiterleitung über header("Location: https://www.google.de"); mit dem localhost Server (XAMPP) einwandfrei aber mit dem Remote Server von Strato gibt es keine Weiterleitung, jedoch kann ich die hinter den Logindaten in der DB erfassten Daten wie id, nutzerid, kennwort, rechte, anrede, vorname, nachname, email über einen Echobefehl auslesen.


    Die var_dump Darstellung ist in einem Punkt untrschiedlich:


    localhost:

    object(mysqli_stmt)#2 (10) { ["affected_rows"]=> int(-1) ["insert_id"]=> int(0) ["num_rows"]=> int(1) ["param_count"]=> int(2) ["field_count"]=> int(8) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(1) }

    Strato:

    object(mysqli_stmt)#2 (10) { ["affected_rows"]=> int(-1) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(2) ["field_count"]=> int(8) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(1) }


    Der Wert ["num_rows"]=>int(0) bei Strato und

    der Wert ["num_rows"]=>int(1) beim localhost


    Könnte das die Fehlerursache sein.


    Bitte entschuldigt, wenn ich manche Eurer Hinweise nicht kapiere, aber ich bin absoluter Neuling und habe die Website mit dem Hilfsprogramm Dreamweaver CS6 erstellt, dass mir allerdings in dieser Frage auch nicht weiterhilft.


    Vorab vielen Dank für Eure Unterstützung!

    Gruß - Holger

  • Zeige deinen aktuellen Quellcode.


    Zitat


    habe die Website mit dem Hilfsprogramm Dreamweaver CS6 erstellt, dass mir allerdings in dieser Frage auch nicht weiterhilft.

    Was jetzt nicht wirklich verwundert, denn Dreamweaver ist Schrott und hoffnungslos veraltet.

  • Und informiere dich bitte in Sachen Affenformular und EVA-Prinzip, dein Script ist komplett falsch aufgebaut

    Hier noch ein simples Beispiel: