PHP Fehler

Die Große Welt des WWW. Hier kann über Technik, Seiten und Programme (Browser, Messenger, Chats, Email usw) geredet werden.
LEMiX
Excellent Member
Excellent Member

Benutzeravatar
 
Beiträge: 692
Registriert: 27.01.2003
Mo 14. Jul 2003, 18:16 - Beitrag #1

PHP Fehler?

Würde dieser Code funktionieren?

$this->bbcode_second_pass_code('', '<?php

session_start();

if(($component != "")) {
if(file_exists("component.$component.php")) {
include("component.$component.php");
exit();
}
}

// Cookie wird ausgelesen
if($HTTP_COOKIE_VARS['profil'] != "") {

$HTTP_SESSION_VARS['MM_Username'] = $profil[user];
$HTTP_SESSION_VARS['MM_UserAuthorization'] = $profil[auto];

session_register("MM_Username");
session_register("MM_UserAuthorization");

}

// Start der Zeitmessung
$take_time_1 = microtime();
$take_time_1_explode = explode(" ",$take_time_1);
$time_1 = $take_time_1_explode[0] + $take_time_1_explode[1];

// Header weiterleitung
if(($logout == "true")) {
header("Location: ?site=logout");
}
?>
<?php require_once('Connections/server.php'); ?>
<?php
/* Login Rountine starten */

$FF_LoginAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING']) && $HTTP_SERVER_VARS['QUERY_STRING']!="") $FF_LoginAction .= "?".$HTTP_SERVER_VARS['QUERY_STRING'];
if (isset($HTTP_POST_VARS['username'])) {
$FF_valUsername=$HTTP_POST_VARS['username'];
$FF_valPassword=$HTTP_POST_VARS['userpass'];
$FF_fldUserAuthorization="user_status";
$FF_redirectLoginSuccess="$PHP_SELF";
$FF_redirectLoginFailed="Der Login ist fehlgeschlagen.";
$FF_rsUser_Source="SELECT user_name, user_pass ";
if ($FF_fldUserAuthorization != "") $FF_rsUser_Source .= "," . $FF_fldUserAuthorization;
$FF_rsUser_Source .= " FROM mac_user WHERE user_name='" . $FF_valUsername . "' AND user_pass='" . $FF_valPassword . "'";
mysql_select_db($database_server, $server);
$FF_rsUser=mysql_query($FF_rsUser_Source, $server) or die(mysql_error());
$row_FF_rsUser = mysql_fetch_assoc($FF_rsUser);
if(mysql_num_rows($FF_rsUser) > 0) {
// username and password match - this is a valid user
$MM_Username=$FF_valUsername;
session_register("MM_Username");

if ($FF_fldUserAuthorization != "") {
$MM_UserAuthorization=$row_FF_rsUser[$FF_fldUserAuthorization];
} else {
$MM_UserAuthorization="";
}
session_register("MM_UserAuthorization");
if (isset($accessdenied) && false) {
$FF_redirectLoginSuccess = $accessdenied;
}
mysql_free_result($FF_rsUser);
session_register("FF_login_failed");
$FF_login_failed = false;

// Routine für erfolgreiche Login

// Cookie für Speicherung
setcookie ("profil[auto]", "$MM_UserAuthorization");
setcookie ("profil[user]", "$MM_Username");

echo "<link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\">";
echo "<meta http-equiv=\"refresh\" content=\"3;URL=index.php\">";
echo "<p class=text-norm>Danke für deine Anmeldung <b>$MM_Username</b>, klicke <a href=index.php>hier</a> wenn du nicht länger warten möchtest.";

exit;
}
mysql_free_result($FF_rsUser);
session_register("FF_login_failed");
$FF_login_failed = true;
// Rountine für fehlgeschlagenden Login
echo "<div class=\"text-norm\">Der angegebene Username und das angegebene Passwort sind nicht vorhanden.
";
echo "Bitte benutzt die Zurück-Taste deines WebBrowsers.</div>";
exit;
}

/* Userdaten lokalisierung */
$colname_user = "1";
if (isset($HTTP_SESSION_VARS['MM_Username'])) {
$colname_user = (get_magic_quotes_gpc()) ? $HTTP_SESSION_VARS['MM_Username'] : addslashes($HTTP_SESSION_VARS['MM_Username']);
}
mysql_select_db($database_server, $server);
$query_user = sprintf("SELECT * FROM mac_user WHERE user_name = '%s'", $colname_user);
$user = mysql_query($query_user, $server) or die(mysql_error());
$row_user = mysql_fetch_assoc($user);
$totalRows_user = mysql_num_rows($user);

/* Userdaten abfragen */
$status = $row_user['user_status'];
$id = $row_user['user_id'];
session_register('status');
session_register('id');

/* News abfragen */
$maxRows_news = 10;
$pageNum_news = 0;
if (isset($HTTP_GET_VARS['pageNum_news'])) {
$pageNum_news = $HTTP_GET_VARS['pageNum_news'];
}
$startRow_news = $pageNum_news * $maxRows_news;

mysql_select_db($database_server, $server);
$query_news = "SELECT * FROM mac_news ORDER BY news_id DESC";
$query_limit_news = sprintf("%s LIMIT %d, %d", $query_news, $startRow_news, $maxRows_news);
$news = mysql_query($query_limit_news, $server) or die(mysql_error());
$row_news = mysql_fetch_assoc($news);

if (isset($HTTP_GET_VARS['totalRows_news'])) {
$totalRows_news = $HTTP_GET_VARS['totalRows_news'];
} else {
$all_news = mysql_query($query_news);
$totalRows_news = mysql_num_rows($all_news);
}
$totalPages_news = ceil($totalRows_news/$maxRows_news)-1;
?>')

-
Edit by The Dom: PHP Code bitte immer im dafür vorgesehen Tag.
Edit 2: Ok - das sieht nicht gut aus - ich habs AJ gesagt, dass er es ändert
[Fips] Hab ma eben in code-Tags gesetzt, das mit dem ändern kann dauern ;) [/Fips]

Krautwiggerl
Royal Member
Royal Member

 
Beiträge: 1603
Registriert: 12.12.2000
Mo 14. Jul 2003, 18:59 - Beitrag #2

Warum, geht er nicht? Probier's halt mal aus, und wenn's nicht geht, dann weiß man zumindest schonmal ungefähr, wo der Fehler liegt.
Ich finde, das ist etwas umständlich geraten... weil's mir gerade auffällt: Variablen sollte man nicht (mehr) mit session_register() in der Session speichern, sondern einfach der Autoglobal $_SESSION zuweisen. Oder müssen wir hier mit einer recht alten Version von PHP auskommen?

BTW: ich bin der Meinung nicht, dass man PHP-Code zwangsweise highlighten muss. Und zwar, weil es manchmal sinnvoll sein kann, ihn eben nicht zu highlighten. Von dieser Farbeinstellung hier kriegt man echt Augenkrebs...

LEMiX
Excellent Member
Excellent Member

Benutzeravatar
 
Beiträge: 692
Registriert: 27.01.2003
Mo 14. Jul 2003, 19:12 - Beitrag #3

ich denke auch so. Aber ich musss dir sagen ich habe die PHP Version 4.06 auf meinem Rechner. Und diese Version kommt nich tdamit klar. Aber ich habe vor in der nächsten Zeit auf die Versio n 4.2 um zusteigen. Der läuft aber ich bedenke wegen den Cookies. Weil bei mir funzen die nicht. Meinste die gehen. Und wie könnte man das vereinfachen?

Krautwiggerl
Royal Member
Royal Member

 
Beiträge: 1603
Registriert: 12.12.2000
Mo 14. Jul 2003, 19:40 - Beitrag #4

Achso ja, mit PHP 4.0.6 geht da noch nix. Grundsätzlich ist es eigentlich gut, wenn man seine Quelltexte abwärtskompatibel hält, zumindest dann, wenn man sich nicht sicher sein kann, eine neuere PHP-Version zu haben. Aber gerade mit den Sessions gibt's da leider immer wieder Probleme... $_SESSION ist z.B. autoglobal mit sich städnig veränderndem Verhalten, $HTTP_SESSION_VARS dagegen nicht.
Werden die Cookies gar nicht erst gesetzt oder gibt es beim Auslesen derselben Probleme?
Das Problem, dass man pro Cookie nur einen Wert speichern kann, kann man auch über Serialisierung umgehen.
Ansonsten würde ich den Quelltext etwas aufgliedern, in verschiedene Funktionen, so ist er sehr unübersichtlich (merkt man oft erst, wenn ein Außenstehender ran soll).
Ich hab meine Login-Module immer dergestalt gelöst, dass, sofern ein Cookie gesetzt ist, dessen Wert genommen wird. Falls dies nix taugt, wird in der Session gesucht. Ist immer noch nix vorhanden, bleiben die Variablen eben leer... der Login ist dann nur noch eine Funktion, die man am Anfang der zu schützenden Seite aufruft und die eigentliche Prüfung der Login-Daten übernimmt.

Achja, und das verstehe ich nicht:

if(($logout == "true"))

beinhaltet die Variable $logout eine Zeichenkette, die "true" enthält, oder soll es eine boolesche Variable sein? In letzterem Falle würde ich so prüfen:

if($logout === true)

(die drei Gleichheitszeichen beinhalten einen zusätzlichen Typvergleich, denn da PHP auf C basiert, wird auch ein 1 als true interpretiert, obwohl es keine boolesche Variable ist)

LEMiX
Excellent Member
Excellent Member

Benutzeravatar
 
Beiträge: 692
Registriert: 27.01.2003
Mo 14. Jul 2003, 19:52 - Beitrag #5

Ich habe jetzt meinen Server erstmal auf Version PHP 4.2.2 und mit dem Logout hat folgende Bedeutung. Meine Seite so in der mitte ein IncludeModul ($site=links) und dann im quelltext: if(($site != "")) { if(file_exits($modul.links.php)) { include ... . Und dies in der Mitte der Seite. Nun ist es schwierig, wenn man in der Mitte mit einem header Befehl machen will. Also habe ich das so gelöst. Hast du ne Login Rountine PHP mit MySQL?

LEMiX
Excellent Member
Excellent Member

Benutzeravatar
 
Beiträge: 692
Registriert: 27.01.2003
Mo 14. Jul 2003, 20:11 - Beitrag #6

Ich habe das Gefühl das was mit dem Cookies nicht stimmt.

Also ich logge miche ein alles wunderbar. Ich logge mich aus er erkennt noch alles. Super. Wenn ich den Browser aber schließe und wieder auf meine Seite gehe erkennt er mich nicht mehr.

Krautwiggerl
Royal Member
Royal Member

 
Beiträge: 1603
Registriert: 12.12.2000
Mo 14. Jul 2003, 20:28 - Beitrag #7

Ja hab ich. Allerdings keine parat, die Sessions und Cookies gleichzeitig nimmt. Für meine bisherigen Projekte musste ich immer entweder oder, obwohl ich mal eins hatte, das mit beidem lief.
Aber ich poste es nur ungern, lieber schicke ich Sachen, die mit Security zu tun haben, einem direkt zu. Ich hab jedenfalls eins hier, das zwar nur mit Sessions läuft, aber 5 Minuten Arbeit und Cookies gehen auch.

Edit: wenn du keinen Ablaufzeitpunkt für das Cookie angibst, dann wird es bei Schließen des Browsers vernichtet!

LEMiX
Excellent Member
Excellent Member

Benutzeravatar
 
Beiträge: 692
Registriert: 27.01.2003
Mo 14. Jul 2003, 20:37 - Beitrag #8

Danke. Ich schicke dir eine pn mit meiner email adresse ok? dann kannste mir mal das script mailen, ok?

The Dom
Senior Member
Senior Member

Benutzeravatar
 
Beiträge: 867
Registriert: 09.12.2000
Di 15. Jul 2003, 13:20 - Beitrag #9

Original geschrieben von Krautwiggerl
BTW: ich bin der Meinung nicht, dass man PHP-Code zwangsweise highlighten muss. Und zwar, weil es manchmal sinnvoll sein kann, ihn eben nicht zu highlighten. Von dieser Farbeinstellung hier kriegt man echt Augenkrebs...

Aber wenn man ihn nicht in den Tag gibt geht auch die Einrückung und somit die Lesbarkeit verloren. Aber (noch) kriegt man der Einstellung wirklich Augenkrebs....


Zurück zu Internet

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste