[PHP & SQL] één keer doorlopen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • stefanbstefan
  • Registratie: Oktober 2002
  • Laatst online: 18-07 09:42
Hallo iedereen,

ik ben bezig met een loginsysteem, waarbij ik tijdens het inloggen de username en de password naar een mysql database schrijf.. :*)

een paar pagina's later wil ik met die gegevens inloggen op een ftp-server. 8)

de tabel in mysql heet onthouden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$server = "localhost"; 
$gebruiker = "loginsysteem"; 
$wachtwoord = "***********"; 
$db = "login"; 

$connectie = mysql_connect($server,$gebruiker,$wachtwoord) 
or die ("Kon niet connecteren met de server"); 
mysql_select_db($db,$connectie) 
or die ("Kon de database niet selecteren"); 

//verbinding maken
$query = "SELECT * FROM `onthouden`";
//query is aangemaakt
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
while($record = mysql_fetch_object($sql)){
echo"klik <a href=\"ftp://".$record->username.":".$record->password."@".$_SERVER["HTTP_HOST"]."/\">hier</a> om naar de FTP-Server te gaan!\n<br>";
}
?>


Als ik deze code uit laat voeren, dan krijg ik twee keer dezelfde regel tekst:

klik hier om naar de FTP-Server te gaan!
klik hier om naar de FTP-Server te gaan!

De eerste link bevat niet de username en password en de tweede wel. De eerste is dus: ftp://:@ip-adres/ en de tweede is ftp://username:password@ip-adres.


Ik dacht dus dat ik mysql_close(); zou moeten gebruiken, zodat het script maar één keer uitgevoerd wordt, maar dan krijg ik alleen de eerste regel en dat is die zonder username en password... :/

Heeft iemand een idee hoe ik dit kan oplossen.

Alvast bedankt!!! ;)

Acties:
  • 0 Henk 'm!

  • Copyman
  • Registratie: Januari 2001
  • Laatst online: 11-09 10:31

Copyman

Dode muis

Je while loopt dus twee keer, misschien dat er iets fout gaat bij het inserten?

Je zou het ook smerig op kunnen lossen door:

PHP:
1
2
3
4
5
while($record = mysql_fetch_object($sql)){
    if(!(empty($record->username) || empty($record->password))) {
        echo"klik <a href=\"ftp://".$record->username.":".$record->password."@".$_SERVER["HTTP_HOST"]."/\">hier</a> om naar de FTP-Server te gaan!\n<br>";
    }
}

[ Voor 16% gewijzigd door Copyman op 31-12-2005 11:46 ]

Zeer belangrijke informatie: Inventaris


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 11-09 13:55
Met je SELECT selecteer je alle records uit de onthouden-tabel. Wil je niet alleen die van de ingelogde gebruiker, en mis je dus niet een WHERE ?
Met een LIMIT 1 achteraan je query beperkt je je SELECT tot 1 record.

Acties:
  • 0 Henk 'm!

Verwijderd

Copyman schreef op zaterdag 31 december 2005 @ 11:45:
Je while loopt dus twee keer, misschien dat er iets fout gaat bij het inserten?

Je zou het ook smerig op kunnen lossen door:

PHP:
1
2
3
4
5
while($record = mysql_fetch_object($sql)){
    if(!(empty($record->username) || empty($record->password))) {
        echo"klik <a href=\"ftp://".$record->username.":".$record->password."@".$_SERVER["HTTP_HOST"]."/\">hier</a> om naar de FTP-Server te gaan!\n<br>";
    }
}
Ik ben niet bekend met MySQL, maar als die 2x de while doorloopt, betekent dat toch alleen dat er ook 2 regels in de tabel zitten? Of verzint MySQL altijd een lege eerste regel?

ps-> ik denk dat er niet iets fout gaat met het inserten van de gegevens, maar met het ophalen... Als je 10 bezoekers op de website hebt, dan krijg je ook later 10 links te zien (van alle bezoekers). En ik denk dat dat niet de bedoeling is...

[ Voor 29% gewijzigd door Verwijderd op 31-12-2005 11:54 ]


Acties:
  • 0 Henk 'm!

  • Copyman
  • Registratie: Januari 2001
  • Laatst online: 11-09 10:31

Copyman

Dode muis

SELECT * FROM onthouden WHERE username = $_SESSION["username"] zou inderdaad ook kunnen, of $_COOKIE, ligt er net aan wat hij gebruikt om gegevens op te slaan.

Zeer belangrijke informatie: Inventaris


Acties:
  • 0 Henk 'm!

  • stefanbstefan
  • Registratie: Oktober 2002
  • Laatst online: 18-07 09:42
ok bedankt voor de reacties, ik heb het volgende uitgeprobeerd en dat werkt:
Copyman schreef op zaterdag 31 december 2005 @ 11:45:
Je while loopt dus twee keer, misschien dat er iets fout gaat bij het inserten?

Je zou het ook smerig op kunnen lossen door:

PHP:
1
2
3
4
5
while($record = mysql_fetch_object($sql)){
    if(!(empty($record->username) || empty($record->password))) {
        echo"klik <a href=\"ftp://".$record->username.":".$record->password."@".$_SERVER["HTTP_HOST"]."/\">hier</a> om naar de FTP-Server te gaan!\n<br>";
    }
}
Het enige probleem nu is dat als er eerst 3x een verkeerde username/password worden ingevoerd, dat ze alle 3 erbij staan als

klik hier om naar de FTP-Server te gaan!
klik hier om naar de FTP-Server te gaan!
klik hier om naar de FTP-Server te gaan!
klik hier om naar de FTP-Server te gaan!


Dat heeft vast te maken met dat ze in de tabel van mysql zijn blijven zitten. hoe kan ik die dan deleten :? want de laatste (de goede username/password) moet bewaard blijven...

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Dat is allemaal ranzig. :/

Escape je inputwaarden in ieder geval
• Selecteer alleen dat ene record (het mag ook maar 1 keer voorkomen...) : WHERE username='".$bla."' AND passwd='".$bla."' . Zie ook: mysql_num_rows
• Zoek ff op GoT op PHP sessions
• Sla het password als md5 oid op. (Zie ook de PHP-FAQ van /14)

:)

Sundown Circus


Acties:
  • 0 Henk 'm!

  • Copyman
  • Registratie: Januari 2001
  • Laatst online: 11-09 10:31

Copyman

Dode muis

Daarvoor heeft MySQL een DELETE clausule.

Maargoed, zoals RedRose al zegt, als je nog niet met sessies werkt, zou ik daar maar even naar kijken.

[ Voor 87% gewijzigd door Copyman op 31-12-2005 12:19 ]

Zeer belangrijke informatie: Inventaris


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Copyman schreef op zaterdag 31 december 2005 @ 12:16:
Maargoed, zoals RedRose al zegt, als je nog niet met sessies werkt, zou ik daar maar even naar kijken.
En dan bedoel ik niet eens de ingebouwde session-functionaliteit van PHP, maar eerder goede manieren om username/password combo's goed te managen. :)

Sundown Circus


Acties:
  • 0 Henk 'm!

  • stefanbstefan
  • Registratie: Oktober 2002
  • Laatst online: 18-07 09:42
Tsja echt veilig zullen mijn scripts niet zijn nee :X maja het werkt :p ik heb het zo gedaan: als je een verkeerd gebruikersnaam/wachtwoord invoert dan redirect ik automatisch naar een pagina, en daar staat een script met de DELETE dinges zodat de hele tabel geleegd wordt :) zo kan het ook :)

En nu maar hopen dat er niet twee mensen precies tegelijk inloggen :9


Het liefst zou ik het met WHERE username='".$bla."' AND passwd='".$bla."' doen idd... maar je kunt $_POST toch alleen maar gebruiken in de pagina ná de pagina waarin je deze variabele een waarde geeft? en niet een paar pagina's verder?

[ Voor 26% gewijzigd door stefanbstefan op 31-12-2005 12:30 ]


Acties:
  • 0 Henk 'm!

  • [BoSS]
  • Registratie: Maart 2000
  • Laatst online: 11:13

[BoSS]

Geen woorden maar daden!

stefanbstefan schreef op zaterdag 31 december 2005 @ 12:27:
Tsja echt veilig zullen mijn scripts niet zijn nee :X maja het werkt :p ik heb het zo gedaan: als je een verkeerd gebruikersnaam/wachtwoord invoert dan redirect ik automatisch naar een pagina, en daar staat een script met de DELETE dinges zodat de hele tabel geleegd wordt :) zo kan het ook :)

En nu maar hopen dat er niet twee mensen precies tegelijk inloggen :9
Je slaat deze gebruikersnaam/wachtwoord op om hem later nog eens te gebruiken? Dan hoef je het niet in de database op te slaan. Je kan het ook in een sessie-variabele of een cookie opslaan (encrypt hem dan wel in dat laatste geval of doe ten minste een base64_encode()).

20x 170 Wp (Solar Frontier) op ZZO / 54 graden

Pagina: 1