Database Communicatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kevin Zegikniet

Kevin Zegikniet

23/03/2013 13:04:27
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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'] .""); }
?>


Ik krijg de error:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


Uploadscript:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>


Alvast bedankt!
Gewijzigd op 23/03/2013 13:07:29 door Kevin Zegikniet
 
PHP hulp

PHP hulp

29/03/2024 14:27:27
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/03/2013 13:17:15
Quote Anchor link
wat is $inlog? $inlog is het resultaat van een mysql query die uitgevoerd wordt. Noem dat liever $result.
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
 
Erwin H

Erwin H

23/03/2013 13:19:36
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
IF ( $inlog == "" )
?>

Check eens wat mysql_query voor return waardes geeft, nooit een string in elk geval, dus checken op een lege string is onzin.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_POST
[name] $_POST[description]
?>

Hier ben je volgens mij wat quotes vergeten...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
date(d)."', '".date(m)."', '".date(Y)
?>

Wat zijn volgens jou d, m en Y voor dingen? Geen strings, geen variabelen, geen constantes...
 
Kevin Zegikniet

Kevin Zegikniet

23/03/2013 13:30:34
Quote Anchor link
@frank
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
 
Erwin H

Erwin H

23/03/2013 13:42:17
Quote Anchor link
2e punt: Nee, want als ik nu verder kijk.... je voert die hele query niet uit, dus er gebeurt uberhaupt niets.

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.
 
Kevin Zegikniet

Kevin Zegikniet

23/03/2013 14:17:03
Quote Anchor link
@Erwin

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
 
- Raoul -

- Raoul -

23/03/2013 14:28:20
Quote Anchor link
De code die je net postte is AFSCHUWELIJK.
Denk aan:
1) coding standards (PSR)
2) uitlijning
3) hoofdletters gebruiken terwijl dat niet nodig is.
 
Erwin H

Erwin H

23/03/2013 14:56:44
Quote Anchor link
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.

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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.