Php - Im Ie Gehts, Im Firefox Nicht! Problem beim auslesen von mySQL...
Anzeige
#17
geschrieben 23. August 2005 - 15:38
print_r($_POST);
kannst du vielleicht einfacher gucken was ein Browser sendet und was nicht.
#18
geschrieben 23. August 2005 - 15:49
phpinfo();
da stehen ja dann alle Parameter etc drin, Vergleich das einfach einmal mit dem IE und einmal mit dem Firefox:-)
#19
geschrieben 24. August 2005 - 07:52
#21
geschrieben 25. August 2005 - 15:11
if ( !$result = mysql_query ( "SELECT fname, lname, addr, country, city, zipcode, email, phone FROM users WHERE uid='$uid'" ) ) {
Wenn ich jetzt ein Cookie setze mit der ID "uid" und dann einfach als Wert speichere: "1'; TRUNCATE users; SELECT * FROM users WHERE 1 = '0"... was denkt ihr passiert dann *g*
benutzt doch bitte mysql_real_escape_string... dafür ist es da
Dieser Beitrag wurde von Yalamand bearbeitet: 25. August 2005 - 15:11
#22
geschrieben 25. August 2005 - 15:17
Dafür hilft meist am Seitencode-Anfang:
ob_start(); session_start();
Dann natürlich den Browser so einstellen das er beim annehmen von Cookies vorher fragt.
#23
geschrieben 25. August 2005 - 17:01
Aber welche funktion stellt mysql_real_escape_string dar?
Ich bräuchte auch einen Code für UPDATE und DELETE.
Was ist eigentlich der unterschied zwischen mysql_real_escape_string und mysql_query?
Danke
#24
geschrieben 25. August 2005 - 17:21
#25
geschrieben 25. August 2005 - 18:03
if (!isset($_SESSION["uid"])) header("Loaction: session_error.php");
Bietet das hoche Sicherheit?
#26
geschrieben 25. August 2005 - 21:43
if (!isset($_SESSION["uid"])) header("Loaction: session_error.php");
ist nur sicher wenn du vorher keine !isset($uid) machst, wenn register globals an hast. ist etwas komplizierter mit diversen php einstellungen.
if(!isset($uid)) $uid = $_SESSION['uid'];
if (!isset($_SESSION["uid"])) header("Loaction: session_error.php");
könnte auf einem falsch eingestellten server mit folgender url umgangen werden: http://localhost/index.php?uid=name
$uid wäre dann gesetzt mit "name" und würde alle checks durchlaufen. also entweder komplett sessions oder komplett posts/get. aber beides zu vermischen ist ab und zu doppelt zu betrachten.
#27
geschrieben 25. August 2005 - 21:59
<?php
ob_start();
// session_start() MUSS auf eine Seite VOR der bestellung!
// Sonst hat der Benutzer das Cookie erst gesetzt und es erscheint
// evtl. leer, je nach PHP und Bugversion
session_start();
require_once('../../../../mysql.php');
// Ich gehe davon aus das UID eine Zahl ist
// Defines, Variablen die sich nicht ändern dürfen zur folgenden Laufzeit
define( 'MAILTO' , '[email protected]' );
// Benötigte Variablen abfangen, ansonsten Abschied
if( !isset($_SESSION['uid']) ||
!isset($_POST['paket']) ||
!isset($_POST['domain']) ||
!isset($_POST['uid']) ||
!is_numeric($_POST['uid'])) {
echo 'Fehler bei der Übertragung der Parameter';
exit(0);
}
// Prio festlegen vom Session-Cookie
if(!isset($_SESSION['uid'])) $_SESSION['uid'] = $_POST['uid'];
db_connect(); // Von dir übernommen
// Optimierte SQL Scripts
// Benutzerdaten auslesen VOR dem speichern der Daten
$result = mysql_query('SELECT * FROM user WHERE uid = '.$_SESSION['uid']);
if(mysql_num_rows($result) === 1) {
$daten = mysql_fetch_array($result, MYSQL_ASSOC);
} else {
echo 'Fehler beim auslesen der Daten';
exit(0);
}
// Die Daten sind dann abrufbar über $daten['fname'], $daten['lname'] etc.
// Mal eine Frage zu den folgenden Script:
// $sql="DELETE FROM bestellung WHERE typ='webhosting' and uid='$uid'";
// $sql="insert into bestellung(uid,typ) values('$uid','webhosting')";
// Bedeutet dies das alle vorherigen Bestellungen nicht verloren gehen?
// Der uid Wert kann ohne Sicherheit und Quotes gemacht werden, da wir vorher
// überprüft haben ob es sich um eine Zahl handelt
mysql_query('
REPLACE INTO
bestellungen
SET
paket = "'.mysql_escape_string($_POST['paket']).'",
domain = "'.mysql_escape_string($_POST['domain']).'",
date = '.time().'
WHERE
typ = "webhosting" AND
uid = '.$_SESSION['uid']
);
// Diese Zeilen sind überflüssige performancefressende Abfragen. Du hast die
// Werte ja noch in $_POST['paket'] und $_POST['domain'] !
// mysql_query("select paket from bestellung where uid='$uid' and typ='webhosting'");
// mysql_query("select domain from bestellung where uid='$uid' and typ='webhosting'");
db_disconnect();
// ... der rest
// und der Abschluss
mail(MAILTO,"$betreffwebmaster","$koerperwebmaster","FROM: $absender");
header("Location: http://www.toxic.at/cgi-bin/useraccount/Bestellung/webhosting/schritt3/index.php");
?>
Dieser Beitrag wurde von Yalamand bearbeitet: 25. August 2005 - 22:00
#28
geschrieben 26. August 2005 - 09:39
Obwohl register_globals aktiviert ist, kommt man an meinem Sicherheitscheck trotzdem nicht vorbei
Zur zweitern Antwort:
UID war vorher mal der Premierschlüssel. Jetzt ist es alerdings der Benutzername.
Ich verstehe allerdings nicht, was dieser Code soll:
// Prio festlegen vom Session-Cookie
if(!isset($_SESSION['uid'])) $_SESSION['uid'] = $_POST['uid'];
Da könnte jemand ja auf seiner Website ein POST-Formular zu meiner Datei absenden, und wäre drinnen!?
Danke übrigens für die Mühe!!
Dieser Beitrag wurde von toxic.at bearbeitet: 13. November 2010 - 19:43
- ← Programmierung Forensystem - Suche Mitarbeiter
- Skript/Web-Programmierung
- [problem] Animierte Buttons Via Css →

Hilfe
Neues Thema
Antworten

Nach oben

