Database Communicatie
Ik heb twee problemen, die allebei met de database te maken hebben.
Probleem 1: inlogscript--> als iemand een gebruikersnaam invult die niet bestaat dan header naar registratiepagina.
Probleem 2: uploadscript: als filmpje geupload is naar map, moet naam beschrijving enzo in database worden gezet. Geen error, en geen nieuwe regel met info in de database.
Alvast: ik weet dat MD5 erg oud is, en ik weet dat 'or die' ook al verbannen is. Maar het is voor mij erg handig, en het werkt voor mij wel.
Inlogscript:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
IF (($_POST['password'] == "") OR ($_POST['username'] == "" ))
{header("Location: http://localhost/"); }
session_start();
mysql_connect("localhost","root","") or die('Could not connect: ' . mysql_error());
mysql_select_db("youtube") or die('Could not find database: ' . mysql_error());
$md5_pass = md5(mysql_real_escape_string($_POST['password']));
$inlog = mysql_query ("SELECT Username FROM user WHERE Username = '". mysql_real_escape_string($_POST['username'])."' AND Password = '". ($md5_pass) ."' ");
IF ( $inlog == "" )
{ $_SESSION['error_head'] = ("De ingevoerde gebruikersnaam bestaat niet. Registreer u, of probeer het opnieuw.");
header("Location: registreer.php"); }
ELSE { $_SESSION['Username'] = mysql_result ($inlog, 0);
header("Location: profiles.php?p=". $_SESSION['Username'] .""); }
?>
IF (($_POST['password'] == "") OR ($_POST['username'] == "" ))
{header("Location: http://localhost/"); }
session_start();
mysql_connect("localhost","root","") or die('Could not connect: ' . mysql_error());
mysql_select_db("youtube") or die('Could not find database: ' . mysql_error());
$md5_pass = md5(mysql_real_escape_string($_POST['password']));
$inlog = mysql_query ("SELECT Username FROM user WHERE Username = '". mysql_real_escape_string($_POST['username'])."' AND Password = '". ($md5_pass) ."' ");
IF ( $inlog == "" )
{ $_SESSION['error_head'] = ("De ingevoerde gebruikersnaam bestaat niet. Registreer u, of probeer het opnieuw.");
header("Location: registreer.php"); }
ELSE { $_SESSION['Username'] = mysql_result ($inlog, 0);
header("Location: profiles.php?p=". $_SESSION['Username'] .""); }
?>
Ik krijg de error:
Code (php)
1
2
3
2
3
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 3 in H:\xampp\htdocs\inlog.php on line 15
Warning: Cannot modify header information - headers already sent by (output started at H:\xampp\htdocs\inlog.php:15) in H:\xampp\htdocs\inlog.php on line 16
Warning: Cannot modify header information - headers already sent by (output started at H:\xampp\htdocs\inlog.php:15) in H:\xampp\htdocs\inlog.php on line 16
Uploadscript:
Code (php)
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
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
<?php
session_start();
IF (!isset($_SESSION['Username']))
{ header('Location: http://localhost/'); }
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
function generateRandomString($length=8)
{ $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++)
{ $randomString .= $chars[rand(0, strlen($chars) - 1)]; }
return $randomString; }
$PATH = generateRandomString();
IF (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
{ $control = TRUE;}
mysql_connect("localhost", "root", "") or die('Could not connect: ' . mysql_error());
mysql_select_db("youtube") or die('Could not find database: ' . mysql_error());
$sql = ("INSERT INTO Video (Name, Filename, Path, Madeby, Description, Views, Likes, Dislikes, Day, Month, Year)
VALUES( '".$_POST[name]."', '".$_FILES['uploadedfile']['name'] ."', '".$PATH."', '".$_SESSION['Username']."', '".$_POST[description]."', 0, 0, 0, '".date(d)."', '".date(m)."', '".date(Y)."') ");
?>
<html>
<head>
<title>Uploaden!</title>
<link rel="icon" type="image/ico" href="/images/favicon.ico" />
</head>
<body bgcolor="#DFDFDF"><center>
<a href="index.html"><img border="0" src="/images/mytube.jpeg" alt="My Tube Hoofdpagina" width="250" height="98"></a><br>
<?php
IF ($control == TRUE)
{ ECHO "<br>Succesfully uploaded '". $_FILES['uploadedfile']['name'] ."' !",
"<br>Ga naar <a href='watch.php?v=". $PATH ." '>uw filmpje!</a>"; }
ELSE { ECHO "<br>Oops, Something went wrong.<br>There was an error uploading the file, please try again!",
"<br><img border='0' src='/images/ohdear.jpeg' alt='Uhoh, something went wrong!' width='650' height='250'>",
"<br><a href='javascript:history.back()';>Klik hier om terug te gaan!</a>"; }
?>
</body>
</html>
session_start();
IF (!isset($_SESSION['Username']))
{ header('Location: http://localhost/'); }
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
function generateRandomString($length=8)
{ $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++)
{ $randomString .= $chars[rand(0, strlen($chars) - 1)]; }
return $randomString; }
$PATH = generateRandomString();
IF (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
{ $control = TRUE;}
mysql_connect("localhost", "root", "") or die('Could not connect: ' . mysql_error());
mysql_select_db("youtube") or die('Could not find database: ' . mysql_error());
$sql = ("INSERT INTO Video (Name, Filename, Path, Madeby, Description, Views, Likes, Dislikes, Day, Month, Year)
VALUES( '".$_POST[name]."', '".$_FILES['uploadedfile']['name'] ."', '".$PATH."', '".$_SESSION['Username']."', '".$_POST[description]."', 0, 0, 0, '".date(d)."', '".date(m)."', '".date(Y)."') ");
?>
<html>
<head>
<title>Uploaden!</title>
<link rel="icon" type="image/ico" href="/images/favicon.ico" />
</head>
<body bgcolor="#DFDFDF"><center>
<a href="index.html"><img border="0" src="/images/mytube.jpeg" alt="My Tube Hoofdpagina" width="250" height="98"></a><br>
<?php
IF ($control == TRUE)
{ ECHO "<br>Succesfully uploaded '". $_FILES['uploadedfile']['name'] ."' !",
"<br>Ga naar <a href='watch.php?v=". $PATH ." '>uw filmpje!</a>"; }
ELSE { ECHO "<br>Oops, Something went wrong.<br>There was an error uploading the file, please try again!",
"<br><img border='0' src='/images/ohdear.jpeg' alt='Uhoh, something went wrong!' width='650' height='250'>",
"<br><a href='javascript:history.back()';>Klik hier om terug te gaan!</a>"; }
?>
</body>
</html>
Alvast bedankt!
Gewijzigd op 23/03/2013 13:07:29 door Kevin Zegikniet
Dan: de query die je uitvoert (executed) is een SELECT query. Wat kun je dan terug verwachten?
1. een false, wat duid op een fout of
2. een resource.
Nu ga jij testen of die resource == "" is. Je vergeet dus helemaal dat je nog iets met die resource moet doen.
je moet nog fetchen met mysql_fetch_assoc() bij voorbeeld.
gelijk maar op de zaak vooruitlopend:
wat kan de functie mysql_fetch_assoc() returnen (terug geven)? kijk zelf eens op http://php.net/manual/en/function.mysql-fetch-assoc.php bij 'Return Values'.
Verder adviseer ik om in plaats van mysql_ mysqli_ te gebruiken. en inderdaad van md5 naar sha1 over te stappen
Gewijzigd op 23/03/2013 13:19:35 door Frank Nietbelangrijk
Check eens wat mysql_query voor return waardes geeft, nooit een string in elk geval, dus checken op een lege string is onzin.
Hier ben je volgens mij wat quotes vergeten...
Wat zijn volgens jou d, m en Y voor dingen? Geen strings, geen variabelen, geen constantes...
Thnx, ik had het eerst al geprobeerd met mysql_result maar dat wilde niet werken.
En er kwam uit de query $inlog als resultaat: "Resource id #3"
Dat vond ik sws al vreemd, maar iig bedankt!
@Erwin
1e stukje is dus al gefixed, toch bedankt!
2e stukje: daar heb je een punt. Maar zou 'ie dan niet alsnog de rest moeten invullen?
3e stukje: dat zijn functies, probeer het zelf maar eens uit.
Dat geeft als volgt:
de dag in cijfers --> 23
de maand in cijfers --> 3
het jaar in cijfers --> 2013
3e punt: Ja... maar je krijgt wel een notice:
Quote:
Notice: Use of undefined constant d - assumed 'd' in C:\Program Files\wamp\www\Testing\misc tests\date_func_test.php on line 2
Als je enigszins netjes wilt programmeren laat je dit dus NIET zo staan.
Een oude versie van het script, waar het precies zo stond met de date() deed het wel.
En ik zal eens kommaatjes toevoegen, maar in de oude versie stond het er ook.
Ik zal echter eens kijken of ik wat kan veranderen.
EDIT: ik zie wat je bedoelt... OEPS :O
Ik heb even 'mysql_query' voor de ' ("SELECT ...' toegevoegd.
Het werkt nu wel (behalve dat de description nog niet meegeupload wordt, maar daar zal ik zelf even naar kijken)
Bedankt!
EDIT: maakt het uit als ik het input veld heb genoemd 'description' en in de query de variabele 'Description' wil uploaden? let op de hoofdletters.
Zo ja, dan is dat de fout waarschijnlijk...
EDIT: dat was inderdaad de fout... Nouja, problemen opgelost, en bedankt mensen!
Gewijzigd op 23/03/2013 14:35:34 door Kevin Zegikniet
Denk aan:
1) coding standards (PSR)
2) uitlijning
3) hoofdletters gebruiken terwijl dat niet nodig is.
Kevin Zegikniet op 23/03/2013 14:17:03:
Een oude versie van het script, waar het precies zo stond met de date() deed het wel.
En ik zal eens kommaatjes toevoegen, maar in de oude versie stond het er ook.
En ik zal eens kommaatjes toevoegen, maar in de oude versie stond het er ook.
Zo te zien zal het je worst wezen of het goed is, alleen dat het werkt. Prima, doe wat je wil, maar wat mij betreft ben je niet goed bezig. Het is een recept voor fouten en het zal je alleen maar meer tijd kosten om iets bruikbaars te krijgen.