if (... AND ...)

te one

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.255
Hab ein kleines problem:

hab jetz auch schon auf anderen seiten und nach anderen lösungen geguckt, abba i-wie gehts immer noch nicht!

es geht darum, dass 2 bedingungen erfüllt werden sollen, bis das in den {} ausgeführt wird!
folgender if-teil überprüft es:
PHP:
if ((isset($_SESSION['username'])) and ($_SESSION['logedin']== 1)) {
 
        include ('logedin.php');
        $open=1;
}
entweder hier überprüft er nicht richtig ob beides Wahr ist, oder er setzt das $_SESSION['logedin'] im folgenden teil nicht richtig?!
PHP:
if ($_POST['formaction'] == 'Absenden') {
  $sql = "SELECT username, password FROM users WHERE username='".$_POST['username']."' AND password='".$_POST['password']."'";
  $result = mysql_query($sql);
  $num_rows = mysql_num_rows($result);
    if ($num_rows == 1) {
        $_SESSION=array();
        $_SESSION['username']=$_POST['username'];
        $_SESSION['logedin']=1;
        echo 'Eingeloggt!<br/><a href="logout.php" target="sub" >Logout</a>';
    }

habe jetzt schon über 2 stunden lang des ganze immer n bissl verändert usw. aber es läfut einfach nicht! Die erste Datei (siehe oben) lässt mich immer in den "logedin-bereich" (also des was dann halt im ersten teil nach dem if in {} steht)
 
wenn der obere teil über dem unteren teil so im code steht wirds zumindest beim ersten mal nicht funktionieren, also schau mal ob der obere teil sicher unter dem unteren steht, weil es wäre unnötig vor dem setzen der session variable zu überprüfen!

sonst, probier mal $_SESSION[...] = true; und dann überprüf mit ...and ($_SESSION['logedin'] === true)) { ...
 
Mach doch mal im if ein "echo "test";", dann siehst auch ob er reinspringt. Außerdem kannst du dir mit "var_dump($_SESSION);" auch mal anzeigen lassen, was in der Session denn nun eigtl. genau drin steht. Möglicherweise hast dich auch 1x korrekt eingeloggt und seitdem besteht die Session immer noch...
 
hmm ja,
PHP:
if ($_POST['formaction'] == 'Absenden')

soll das jetzt login button sein? wenn ja, dann machst du genau hier falsch...

PHP:
if(isset($_POST....))
isset prüft ob dein element angeklickt ist. Ein stringvergleich auf diese weise wird nie funktionieren... ;)

Versuch einfach ma drüben ne. http://php.net
da sind auch viele sachen auf deutsch!
 
ah sfranz, kann des wirklich ein problem sein?
weil ich hab bis jetzt bei meinem probeuser einfach so das pw in der Datenbank!

@roker002:
klar müsste des funktionieren!, denn:
PHP:
    <form action="logedin.php" method="post">
    <fieldset>
        <legend>Bitte Daten eingeben<br/></legend>
          <table border="0" cellpadding="0" cellspacing="4">
      <tr align="right">Username:</tr>
      
      <tr><label><input type="text" name="username" size="15" value="'.$_COOKIE['username'].'" /></label></tr>
          <tr>
          </tr>
      <tr align="right">Passwort:</td>
      
      <tr><label><input type="password" name="password" size="15" /></label></tr>
      
        <tr align="center"><input type="submit" name="formaction" value="Absenden" /></tr>
          </tr>
          </table>
    </fieldset>
</form>';
somit bekommt beim absenden $_POST['formaction'] den wert "Absenden" zugewiesen!

ha und ich glaub ich hab hier schon das problem gefunden!!! denn dieses fomular sendet die daten ja direkt ( <form action="logedin.php" method="post">) an die logedin.php-datei!
dann wirds ja vorher garnet überprüft! muss ich nochmal n bissl rumprobieren!

@BerniG: lass mir $_SESSION immer durch print_r ausgeben!
abba ich glaub das des problem eben am oben genannten punkt (formular) fehlerhaft ist!

@Fatal Error: werd ich dann mal probieren, aba ich denk durch die formularänderung müsste es dann eh gehen (abba du hast recht, beim ersten mal einloggen, steht einfach nur da:
You are logged in as ! da lässt er den namen weg!)
Ergänzung ()

achja das formularziel hat nicht gepasst! jetzt funktionierts einwandfrei!
 
Nur mal so btw, ich hoffe deine Anwendung muss nicht irgendwelche sicherheitsrelevanten Anforderungen erfüllen, sondern ist nur für Lernzwecke o.ä.

te one schrieb:
PHP:
  $sql = "SELECT username, password FROM users WHERE username='".$_POST['username']."' AND password='".$_POST['password']."'";
  $result = mysql_query($sql);
// --

Stichwort: SQL-Injection bzw. Gegenmaßnahmen in PHP. ;)
 
thx!
jop sicherheitslücke war mir bekannt, möcht ich mich aber erst drum kümmern, wenn script schon ziemlich fertig ist!

trotzdem danke, dann werd ich mir das jetz schon mal angucken!
(brauch ich ja dann für anmeldung auch)
Ergänzung ()

ähm bei meinem funpic-server ist magic_quotes_gpc automatisch auf ON!
machts was wenn ich mich darauf verlasse??
weil wenn ich nochmal escape hab ich ja wieder alles doppelt^^ und ausschalten kann ichs bei funpic nicht!
 
da bedeutet doch, dass ich warten kann, bis die bei funpic die 6er version draufmachn, und erst dann escape ich die nochmal extra!

weil wenn ichs jetz schon escape dann gibts widda ein escape-drucheinander...
 
Ja genau verlass dich drauf und dann vergisst dus natürlich (bzw. hast keine Zeit/Lust) wenn funpic mal umstellt oder du woanders deine Sachen hostest.

Magic-Quotes lässt sich sicher auch bei funpic irgendwie deaktivieren (vielleicht per Einstellung oder per htaccess, siehe http://us3.php.net/manual/en/security.magicquotes.disabling.php ; notfalls würde ich dieses"Example #2" nutzen anstatt es anzulassen!).
Es ist wirklich dringend anzuraten, es JETZT gleich richtig zu machen anstatt später mit dem Ausbessern anzufangen (und es dann vielleicht an einigen Stellen oder gleich ganz zu vergessen). Der Mehraufwand, das gleich richtig zu machen, ist wesentlich geringer als das später zu migrieren!
 
ja gut stimmt eigentlich schon^^
hm dann muss ich des erstmal ausprobieren, ob des überhaupt funktioniert, weil ich denk (weil ich da letztin schonmal gegooglet hab), dass des mit htaccess net funktioniert
 
Zurück
Oben