Überweisungsscript funktioniert nicht |
Verena1993

Mitglied
 

Dabei seit: 06.09.2006
Beiträge: 1.242
 |
|
Überweisungsscript funktioniert nicht |
 |
HalliHallo,
ich habe folgendes Problem:
Bin gerade dabei ein Banksystem aufzubauen und scheitere gerade an den Überweisungen.
E gibt eine Tabelle transaktionen in der alles Transaktionen gespeichert werden... Wenn ich also des Formular der Überweisung ausfülle werden die eingetragenen Daten in transaktionen gespeichert. Da nicht jeder auf jedem sien Konto zugreifen kann soll das ganze natürlich im internen Bereich statt finden, sprich die absenderid aus der Session verwendet werden... Aber irgendwie funktioniert es nicht xD
hier die Codes:
Überweisungsformular
code: |
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:
|
<?php
session_start();
include 'sessionhelpers.inc.php';
echo '
Du bist ';
if (!logged_in())
echo 'nicht ';
echo 'eingeloggt.<p />';
echo '<a href="login.php">Start</a>';
?>
<html>
<head>
<title>Überweisungen tätigen</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
<h3>Überweisungen tätigen</h3>
<form action='ueberweisung_send.php' method='post'>
<table>
<tr>
<td><b>Empfänger-ID</b><br><small>Falls du die Überweisungen an ein externes Konto richten willst wähle bitte die ID 1</small></td>
<td><input type='text' name='empfaengerid'></td>
</tr>
<tr>
<td><b>Betrag</b><br><small>Bitte keine Vorzeichen verwenden.</small></td>
<td><input type='text' name='betrag'></td>
</tr>
<tr>
<tr>
<td><b>Grund</b></td>
<td><input type='text' name='grund'></td>
</tr>
</table><br>
<input class='button' type='submit' value='Ändern'> <input class='button' type='reset' value='Zurücksetzen'>
</form>
</body>
</html>
|
|
ueberweisung_send
code: |
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:
|
<?php
session_start();
include ('sessionhelpers.inc.php');
include('db.php');
$empfaengerid = $_POST['empfaengerid'];
$betrag = $_POST['betrag'];
$grund = $_POST['grund'];
$absenderid = $_SESSION['user'];
{
$eintrag = "INSERT INTO `transaktionen` ( `id`, `empfaengerid`, `betrag`, `absenderid`, `grund` )
VALUES (``, `$empfaengerid`, `$betrag`, `$absenderid`, `$grund`)";
$eintragen = mysql_query($eintrag) ;
if($eintragen=='true') {
echo "Deine Überweisung war erfolgreich!<br>
Noch eine Überweisung tätigen?<br>
<a href="javascript:%20history.back(-2)" target="_self">Zurück</a>";
} else {
echo "Fehler!<br /><hr><br />";
echo mysql_error;
}
}
?> |
|
sessionhelpers.inc.php
code: |
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:
|
<?php
function connect()
{
$con=mysql_connect('localhost','costantinstables','Nauiboy2') or die(mysql_error());
mysql_select_db('costantinstables',$con) or die(mysql_error());
}
function check_user($name, $pass)
{
$sql="SELECT UserID
FROM users
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
LIMIT 1";
$result=mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result)==1)
{
$user=mysql_fetch_assoc($result);
return $user['UserID'];
}
else
return false;
}
function login($userid)
{
$sql="UPDATE users
SET UserSession='".session_id()."'
WHERE UserID=".$userid;
mysql_query($sql);
}
function logged_in()
{
$sql="SELECT UserID
FROM users
WHERE UserSession='".session_id()."'
LIMIT 1";
$result=mysql_query($sql);
return (mysql_num_rows($result)==1);
}
function logout()
{
$sql="UPDATE users
SET UserSession=NULL
WHERE UserSession='".session_id()."'";
mysql_query($sql);
}
connect();
?> |
|
Ich vermute ja fast dass mein Fehler bei der estlegung der Variable &absenderid liegt, aber ich finde einfach keine Lösung...
LG Verena
|
|
18.06.2010 14:31 |
|
|
Stelo

de drecksche Assl
 

Dabei seit: 28.04.2005
Beiträge: 1.628
 |
|
Und wie immer erst einmal die Frage. Was genau funktioniert nicht?
__________________
"Es gibt keine Romanhelden mehr,
weil es keine Individualisten mehr gibt,
weil die Individualität verlorengegangen,
weil der Mensch einsam, jeder Mensch gleich einsam,
ohne Recht auf individuelle Einsamkeit ist und
eine namen- und heldenlose einsame Masse bildet."
Günter Grass

|
|
18.06.2010 14:49 |
|
|
Oli
Server-Administrator
    
Dabei seit: 13.06.2010
Beiträge: 1.540
 |
|
Hi,
zunächst: poste PHP-Code in Zukunft bitte mit [php] statt [code], dann wird er farblich hervorgehoben.
Um dir helfen zu können, müsste ich wissen, wo $_SESSION['user'] her kommt. (Edit: ) Poste mal bitte das Loginscript (Passwörter entfernen, falls welche drin stehen)?
Ein paar mögliche Probleme sind mir trotzdem aufgefallen, die haben damit jedoch wenig zutun:
Überweisungsformular
Sieht soweit ganz gut aus, das Einzige, das mir aufgefallen ist, ist, dass dein "Du bist (nicht) eingeloggt" nicht im <body> ausgegeben wird, somit ist dein HTML nicht valide. Sollte an der Funktion jedoch nichts ändern.
ueberweisung_send.php
Mögliches Problem mit SQL Injection, die Formulareingaben werden ausgewertet, egal, was sie beinhalten. Man könnte z.B. "Apfel" überweisen.
true ist eine Konstante, kein String. Daher keine Anführungszeichen drum herum.
php: |
1:
|
if($eintragen==true) |
|
Außerdem würde ich empfehlen, den Link statt auf java script:history.back(-2) auf eine "echte" Adresse zu leiten, also den Link auf das Formular.
LG,
Oli
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Oli: 18.06.2010 14:53.
|
|
18.06.2010 14:52 |
|
|
Verena1993

Mitglied
 

Dabei seit: 06.09.2006
Beiträge: 1.242
Themenstarter
 |
|
Login.php
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
|
<?php
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
echo '<form method="post" action="login.php">
<label>Benutzername:</label><input name="username" type="text"><br>
<label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>';
else
echo '<a href="logout.php">Ausloggen</a>';
echo '<p /><a href="logged_in.php">Check</a>';
?> |
|
@ Vroni, ich weiß wohl dass von alleine nichts geht, aber wenn ichs wüsste müsste ich hier nciht fragen
|
|
18.06.2010 14:56 |
|
|
Verena1993

Mitglied
 

Dabei seit: 06.09.2006
Beiträge: 1.242
Themenstarter
 |
|
Das weiß ich wohl, aber Oli wollts sehen...
|
|
18.06.2010 14:59 |
|
|
Oli
Server-Administrator
    
Dabei seit: 13.06.2010
Beiträge: 1.540
 |
|
Du könntest den Wert für $_SESSION['user'] gleich mit setzen - im Loginscript. Ansonsten beinhaltet $_SESSION['user'] nämlich nichts.
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false) { //Klammer beachten!
login($userid);
$_SESSION["user"]=$userid; //diese Zeile ist neu
} //Klammer beachten!
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
} |
|
Die Klammern werden notwendig, weil jetzt nicht nur 1 Befehl zu dem if gehört.
|
|
18.06.2010 15:00 |
|
|
Verena1993

Mitglied
 

Dabei seit: 06.09.2006
Beiträge: 1.242
Themenstarter
 |
|
jetzt bringts mir einen Fehler in ueberweisung.php zeile 7, des is da wo
session_start();
steht..
@ Vroni, ich sagte ja ich weiß nciht wo
|
|
18.06.2010 15:05 |
|
|
Oli
Server-Administrator
    
Dabei seit: 13.06.2010
Beiträge: 1.540
 |
|
Zitat: |
Original von Vroni
Oli, ich versuche immer ein bisschen zum selber Denken anzuregen, aber das scheint (hier) ja nicht zu funktionieren. |
Bei mir kommt das immer auf den Fall an. Hier fand ich es einfacher, direkt nach dem Code zu fragen, weil eine sprachliche Formulierung meist nicht eindeutig ist. Ein Bild.. äh.. Code sagt mehr als 1000 Worte.
|
|
18.06.2010 15:10 |
|
|
Verena1993

Mitglied
 

Dabei seit: 06.09.2006
Beiträge: 1.242
Themenstarter
 |
|
Fehlermeldung auf ueberweisung.php
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/costantinstables/www/ueberweisung.php:6) in /users/costantinstables/www/ueberweisung.php on line 7
Fehlermeldung bei ueberweisung_send.php ist einfach mysql_error, also das was bei else ausgegeben werden soll
Vroni, ich bin hier weil ich Hilfe brauche, wenn ich durch Denken selbst drauf kommen könnte, dann hätte ich diesen Thread, nach 4 Stunden denken bestimmt nciht eröffnet, sondern nach kurzer Zeit die Lösung gefunden...
|
|
18.06.2010 15:11 |
|
|
Oli
Server-Administrator
    
Dabei seit: 13.06.2010
Beiträge: 1.540
 |
|
Zitat: |
Original von Verena1993
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/costantinstables/www/ueberweisung.php:6) in /users/costantinstables/www/ueberweisung.php on line 7 |
session_start() muss am Anfang der Datei stehen. Es darf nichts vorher an den Browser gesendet werden.
Zitat: |
Fehlermeldung bei ueberweisung_send.php ist einfach mysql_error, also das was bei else ausgegeben werden soll |
Logisch, schließlich existiert die Session nicht und dadurch fehlt in der SQL-Abfrage $absenderid.
Zitat: |
Vroni, ich bin hier weil ich Hilfe brauche, wenn ich durch Denken selbst drauf kommen könnte, dann hätte ich diesen Thread, nach 4 Stunden denken bestimmt nciht eröffnet, sondern nach kurzer Zeit die Lösung gefunden... |
Das mag für dich stimmen, allerdings gibt es auch Leute, die nicht nachdenken und meinen, dass Andere die Arbeit für sie tun würden. Daher ist das "zum Denken anregen" gar nicht so verkehrt - etwas Eigeninitiative gehört schließlich auch dazu.
|
|
18.06.2010 15:17 |
|
|
Verena1993

Mitglied
 

Dabei seit: 06.09.2006
Beiträge: 1.242
Themenstarter
 |
|
okay, habs jetzt an Anfang von der Datei gesetzt, des einzigste was noch davor ist ist <?php
funktioniert leider auch nciht kommt immernoch die meldung dass ich der zeile wo session_start ist der fehöer sitzt
|
|
18.06.2010 15:22 |
|
|
Oli
Server-Administrator
    
Dabei seit: 13.06.2010
Beiträge: 1.540
 |
|
Befinden sich vor <?php noch irgendwelche Leerzeichen oder leere Zeilen? Diese gelten nämlich auch als Ausgabe.
So gehts:
php: |
1:
2:
3:
|
<?php
session_start();
... |
|
So nicht (leere Zeilen):
php: |
1:
2:
3:
4:
|
<?php
session_start();
... |
|
So auch nicht (Leerzeichen):
php: |
1:
2:
3:
|
<?php
session_start();
... |
|
|
|
18.06.2010 15:24 |
|
|
Verena1993

Mitglied
 

Dabei seit: 06.09.2006
Beiträge: 1.242
Themenstarter
 |
|
okay, also des funktioniert jetzt schonmal
danke
und jetzt kommt immernoch die Fehlermeldung von der ueberweisung_send... du sagtest ja es wurde keine session gestartet, das müsste ja jetzt gelöst sein, oder?
|
|
18.06.2010 15:26 |
|
|
Verena1993

Mitglied
 

Dabei seit: 06.09.2006
Beiträge: 1.242
Themenstarter
 |
|
gute frage, nächste frage xD
Habe die eben mal rausgebaut, verändert aber am ergebnis nichts..
|
|
18.06.2010 15:30 |
|
|
Verena1993

Mitglied
 

Dabei seit: 06.09.2006
Beiträge: 1.242
Themenstarter
 |
|
nach wievor das echo beim else
|
|
18.06.2010 15:31 |
|
|
Oli
Server-Administrator
    
Dabei seit: 13.06.2010
Beiträge: 1.540
 |
|
Zitat: |
Original von Vroni
Und was gibt mysql_error() aus? |
Würde mich auch mal interessieren. Es muss übrigens mysql_error() heißen, also mit Klammer dahinter:
php: |
1:
|
echo mysql_error(); |
|
Dann bitte Fehlermeldung posten.
|
|
18.06.2010 15:34 |
|
|
Verena1993

Mitglied
 

Dabei seit: 06.09.2006
Beiträge: 1.242
Themenstarter
 |
|
Unknown column '' in 'field list'
|
|
18.06.2010 15:36 |
|
|
Thorim
Mitglied
 

Dabei seit: 04.02.2010
Beiträge: 154
Herkunft: Deutschland
 |
|
was mir grad in ueberweisung_send aufgefallen ist
code: |
1:
|
VALUES (``, `$empfaengerid`, `$betrag`, `$absenderid`, `$grund`)"; |
|
nur Feldnamen werden in `...` gesetzt, die Werte in '...', dementsprechend:
code: |
1:
|
VALUES ('', '$empfaengerid', '$betrag', '$absenderid', '$grund')"; |
|
|
|
18.06.2010 15:41 |
|
|
|
Impressum
|