Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

Mail Nachricht "0"

Diskussion: Mail Nachricht "0" im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo, ich habe ein Skript, das dem Benutzer eine E-Mail mit seinen Zugangsdaten schickt. Leider wird jedoch als Nachricht ...

Antwort
Alt 03.01.11, 20:18   #1 (permalink)
 
Registriert seit: 20.12.09
sulpsulpc Leistung: Addierstift
sulpsulpc eine Nachricht über Skype™ schicken
Likes: 0
Standard Mail Nachricht "0"

Anzeige

Hallo,

ich habe ein Skript, das dem Benutzer eine E-Mail mit seinen Zugangsdaten schickt. Leider wird jedoch als Nachricht "0" angezeigt.

PHP-Code:
<?php
require_once("./lib/define.php");
mysql_connect(DBHOST,DBUSER,DBPASS) or die("Error ".mysql_errno().": ".mysql_error());
mysql_select_db(DBNAME) or die("Error ".mysql_errno().": ".mysql_error());
$uname $_POST["Uname"];
$upass $_POST["Upass"];
$upass2$_POST["Upassw"];
$to $_POST["Uemail"];
$subject "Ihre Registrierung beim EEP Gemeinschaftsprojekt";
$message 'Sie haben sich erfolgreich beim EEP Gemeinschaftsprojekt registriert. Bitte heben Sie diese E-Mail gut auf, denn ich haben keine Möglichkeit an ihr Passwort heranzukommen,"
falls sie es verlieren. Hier ihre Zugangsdaten:\n"
Benutzername: '
.$uname.'\nPasswort: '.$upass.'\n';
$additional_headers "From: mb1-anlagen@web.de";
if (
$_POST["anlage"] == "Fischbach"$aid 0;
else 
$aid 1;

if(
$uname == "" || $upass == "" || $upass2 == "" || $to == "") {
    
Header("Location: ./?s=regist&e=3&sid=".session_id());
}elseif (
$upass != $upass2) {
    
Header("Location: ./?s=regist&e=2&sid=".session_id());
}else{
    
$iquer mysql_query("SELECT `index` FROM `users` WHERE `anlagenid` = '".$aid."' ORDER BY `index` DESC") or die("Error ".mysql_errno().": ".mysql_error());
    
$lastindex mysql_fetch_object($iquer);
    
$index $lastindex->index 1;
    
$query mysql_query("INSERT INTO `users` (`name`, `passwort`, `email`, `registrierungsdatum`, `index`, `anlagenid`) VALUES ('".$uname."', '".sha1(md5($upass))."', '".$to."', '".date("Y-m-d")."', '".$index."', '".$aid."')") or die("Error ".mysql_errno().": ".mysql_error());
    if(
$query == true) {
        
$mail mail($to$subject$message$additional_headers);
        if(
$mail == true) {
            
?><script type="text/javascript">alert('Sie sollten nun in kürze eine E-Mail mit ihren Zugangsdaten erhalten.');window.location.href = './';</script>
            <?php
        
}else{
            
?><script type="text/javascript">alert('Die E-Mail konnte nicht versandt werden.');window.location.href = './';</script>
            <?php
        
}
    }else{
        
?><script type="text/javascript">alert('Fehler beim Schreiben in die Datenbank');window.location.href = './';</script>
        <?php
    
}
}
?>
Wieso schreibt er "0" statt dem Inhalt von $message?
__________________
Browser: Firefox 4.01
PHP-Version: 5.3
Framework: 2.0.50727, 3.0, 3.5
OS: Windows 7 Home Premium 64-Bit, Ubuntu 11.04
sulpsulpc ist offline   Mit Zitat antworten
Alt 03.01.11, 22:40   #2 (permalink)
Member of Honour
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
Standard

also erstmal is das script anfällig gegen sql injections
warum die nachricht 0 anzeigt frag ich mich auch grad, sollte eigentlich nicht der fall sein.

schau mal mit var_dump($message); nach, was die variable für werte nach deklaration und vor aufruf der mail() funktion enthält.
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 03.01.11, 22:58   #3 (permalink)
 
Benutzerbild von Dresko
 
Registriert seit: 30.01.10
Dresko Leistung: 8086Dresko Leistung: 8086
Likes: 1
Standard

Nach kurzem Überfliegen würde ich den Fehler bei den ganzen Anführungszeichen vermuten. Außerdem fürchte ich, dass das mit den einfachen Anführungszeichen und dem Zeilenumbruch nicht hinhaut.
'\n' wird anders interpretiert als "\n" und die Steuerzeichen \n, \r, \t, usw. funktionieren nur bei " ".
Bleibe am besten bei einer Hochkomma-Art, (" " würde sich da anbieten) und maskiere weitere Anführungszeichen innerhalb des Strings mit einem \.

Z.B. so:
Code:
$message = "Sie haben sich erfolgreich beim EEP Gemeinschaftsprojekt registriert.
Bitte heben Sie diese E-Mail gut auf, denn ich haben keine Möglichkeit an ihr Passwort heranzukommen,
falls Sie es verlieren. Hier ihre Zugangsdaten:\nBenutzername: " . $uname . "\nPasswort: " . $upass . "\n";
Und wie easteregg schon schrieb ist dein Script sehr unsicher. Verwende niemals ungeprüfte Variablen wenn du ein Query zusammenbaust und die Session-ID solltest du auch nicht per GET übertragen (Stichwort: Session-Hijacking).
__________________
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
- Rick Cook -
Dresko ist offline   Mit Zitat antworten
Alt 04.01.11, 13:05   #4 (permalink)
Themenstarter
 
Registriert seit: 20.12.09
sulpsulpc Leistung: Addierstift
sulpsulpc eine Nachricht über Skype™ schicken
Likes: 0
Standard

Wo bittte übergebe ich Sessions mit $_GET? Und wie will man da bitte SQL Injections machen (gut, ich habe relativ wenig Ahnung von SQL Injections), denn die URL muss ja dann wohl lauten:
Code:
Http://www.addresse.de/registrieren.php
__________________
Browser: Firefox 4.01
PHP-Version: 5.3
Framework: 2.0.50727, 3.0, 3.5
OS: Windows 7 Home Premium 64-Bit, Ubuntu 11.04
sulpsulpc ist offline   Mit Zitat antworten
Alt 04.01.11, 13:24   #5 (permalink)
kG
 
Registriert seit: 19.02.06
kG Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Zitat von sulpsulpc Beitrag anzeigen
Wo bittte übergebe ich Sessions mit $_GET?
Na dort:

PHP-Code:
if($uname == "" || $upass == "" || $upass2 == "" || $to == "") {
    
Header("Location: ./?s=regist&e=3&sid=".session_id());
}elseif (
$upass != $upass2) {
    
Header("Location: ./?s=regist&e=2&sid=".session_id());
}else{ 
kG ist offline   Mit Zitat antworten
Alt 04.01.11, 13:58   #6 (permalink)
Themenstarter
 
Registriert seit: 20.12.09
sulpsulpc Leistung: Addierstift
sulpsulpc eine Nachricht über Skype™ schicken
Likes: 0
Standard

Nur dass da halt die Session ID leer ist, der Benutzer ist ja schließlich nicht angemeldet.
__________________
Browser: Firefox 4.01
PHP-Version: 5.3
Framework: 2.0.50727, 3.0, 3.5
OS: Windows 7 Home Premium 64-Bit, Ubuntu 11.04
sulpsulpc ist offline   Mit Zitat antworten
Alt 04.01.11, 14:27   #7 (permalink)
kG
 
Registriert seit: 19.02.06
kG Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Zitat von sulpsulpc Beitrag anzeigen
Nur dass da halt die Session ID leer ist, der Benutzer ist ja schließlich nicht angemeldet.
Es geht ja drum dass jemand dem Nutzer die Session klauen kann. Wenn er nicht angemeldet ist, dann brauchst du doch theoretisch keine Sessions an der Stelle?


Bezüglich den SQl-Injections:

PHP-Code:
$uname $_POST["Uname"];
$upass $_POST["Upass"]; 
Du solltest die Inhalte der Variablen überprüfen ehe du die im

PHP-Code:
$query mysql_query("INSERT INTO `users` (`name`, `passwort`, `email`, `registrierungsdatum`, `index`, `anlagenid`) VALUES ('".$uname."', '".sha1(md5($upass))."', '".$to."', '".date("Y-m-d")."', '".$index."', '".$aid."')") or die("Error ".mysql_errno().": ".mysql_error()); 
einfach so verwendest.

Geändert von kG (04.01.11 um 14:27 Uhr) Grund: Inhalte, nicht die Variablen selber :)
kG ist offline   Mit Zitat antworten
Alt 04.01.11, 15:41   #8 (permalink)
 
Registriert seit: 12.08.10
mime Leistung: Pentium Imime Leistung: Pentium I
Likes: 30
Standard

Zitat:
Zitat von sulpsulpc Beitrag anzeigen
Wieso schreibt er "0" statt dem Inhalt von $message?
Das ist unter Windows, oder? Wenn ja, bitte mal die Hinweise unter http://de2.php.net/manual/de/function.mail.php und http://www.php-faq.de/q-mail-windows.html lesen

HTH

Micha
__________________
http://www.openvas.org
mime ist offline   Mit Zitat antworten
Alt 04.01.11, 16:11   #9 (permalink)
Themenstarter
 
Registriert seit: 20.12.09
sulpsulpc Leistung: Addierstift
sulpsulpc eine Nachricht über Skype™ schicken
Likes: 0
Standard

Wie kommst du auf die Idee, dass das auf Windows läuft? Das Skript läuft natürlich unter Linux!
__________________
Browser: Firefox 4.01
PHP-Version: 5.3
Framework: 2.0.50727, 3.0, 3.5
OS: Windows 7 Home Premium 64-Bit, Ubuntu 11.04
sulpsulpc ist offline   Mit Zitat antworten
Alt 04.01.11, 16:26   #10 (permalink)
 
Registriert seit: 12.08.10
mime Leistung: Pentium Imime Leistung: Pentium I
Likes: 30
Standard

Zitat:
Zitat von sulpsulpc Beitrag anzeigen
Wie kommst du auf die Idee, dass das auf Windows läuft?
Warum sollte es nicht? War eine Möglichkeit. Laut deiner Signatur benutzt du (auch) Windows.

Zitat:
Das Skript läuft natürlich unter Linux!
Dann schreibe es doch das nächste mal gleich dazu. Warum "natürlich unter Linux"? Gibt eine Menge mehr Systeme unter denen php läuft.

Die Mailfunktion an sich passt. Deine Zeilenumbrüche funktionieren aufgrund der "'" nicht, aber das wurde dir ja schon gesagt und ist auch nicht das Problem. Wenn ich deinen Code auf ein Minimum reduziere funktioniert das hier.

PHP-Code:
<?php

$uname 
"mime";
$upass "mime";
$to "mime@example.com";

$subject "Ihre Registrierung beim EEP Gemeinschaftsprojekt";

$message 'Sie haben sich erfolgreich beim EEP Gemeinschaftsprojekt registriert. Bitte heben Sie diese E-Mail gut auf, denn ich haben keine Möglichkeit an ihr Passwort heranzukommen,"
falls sie es verlieren. Hier ihre Zugangsdaten:\n"
Benutzername: '
.$uname.'\nPasswort: '.$upass.'\n';
$additional_headers "From: mime@gmx.de";

$mail mail($to$subject$message$additional_headers);

print 
$mail;
        
?>
Ergebnis: 1

Was sagt denn das Log des Mailservers zu der ganzen Geschichte?

Micha
__________________
http://www.openvas.org
mime ist offline   Mit Zitat antworten
Alt 05.01.11, 14:15   #11 (permalink)
Themenstarter
 
Registriert seit: 20.12.09
sulpsulpc Leistung: Addierstift
sulpsulpc eine Nachricht über Skype™ schicken
Likes: 0
Standard

Vielleicht schaust du dir nochmal meine Signatur an
Zitat:
Windows 7 Home Premium 32-Bit, Ubuntu 10.04 TLS
Siehst du sonst noch ein OS, das ich benutzen könnte
__________________
Browser: Firefox 4.01
PHP-Version: 5.3
Framework: 2.0.50727, 3.0, 3.5
OS: Windows 7 Home Premium 64-Bit, Ubuntu 11.04
sulpsulpc ist offline   Mit Zitat antworten
Alt 05.01.11, 14:29   #12 (permalink)
kG
 
Registriert seit: 19.02.06
kG Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Zitat von sulpsulpc Beitrag anzeigen
Vielleicht schaust du dir nochmal meine Signatur an

Siehst du sonst noch ein OS, das ich benutzen könnte
Da steht auch Windows drin... jetzt aber zurück zum Thema... Dir wurden ja schon Änderungsvorschläge gemacht. Schreib mal deinen jetzigen Code nochmal rein, falls das Problem noch besteht. Und gegebenenfalls was mime meinte, die logs.
kG ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » PHP Mail Nachricht "0"
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61