Avatar billede tras Juniormester
05. oktober 2005 - 09:25 Der er 26 kommentarer og
1 løsning

Fejl i GET username

Jeg skal havde lavet så vis username ikke findes i database så fortæl at der ikke er det brugernavn ellers update bruger... Men tror ikke jeg bruger den rigtige måde at hente username fra databasen og sammenligene med post

<?php
include("func.php");
DB::Conn("open");
$query = mysql_query("select `*` from `db_users`
                      where `username`='" . $_POST['username'] . "'") or die (mysql_error());
                                                                                   
if (!empty($_POST['username'])
    && !empty($_POST['email'])
        && !empty($_POST['code'])
        && $_POST['username'] == ($Get->username))
{
        $username = $_POST['username'];
        $email = $_POST['email'];
        $code = $_POST['code'];
        $password = md5($_POST['password']);
        mysql_query("update db_users set password = '$password' WHERE username = '$username' and email = '$email' and code = '$code'") or die (Java::Alert("MySQL Error: ".mysql_error()));
        Java::GoToURL("index.php?menu=account&page=account_account");
} else { ?>
<table>
    <tr>
        <td>&nbsp;

        </td>
    </tr>
</table>
<table bgcolor="#FFFF00" align="center" style="border: 1px gray solid;">
    <tr>
        <td align="center">
            Warning
        </td>
    </tr>
    <? if($_POST['username'] == ""){ ?>
    <tr>
        <td>
            The <strong>Username</strong> field is empty?
        </td>
    </tr>
    <? } ?>
    <? if($_POST['email'] == ""){ ?>
    <tr>
        <td>
            The <strong>Email</strong> field is empty?
        </td>
    </tr>
    <? } ?>
    <? if($_POST['code'] == ""){ ?>
    <tr>
        <td>
            The <strong>Private Code</strong> field is empty?
        </td>
    </tr>
    <? } ?>
    <? if($_POST['username'] != $Get->username){ ?>
    <tr>
        <td>
            The <strong>Username</strong> do not Exsist
        </td>
    </tr>
    <? } ?>

</table>
<table align="center">
    <tr>
        <td>
            <a href="java script:history.go(-1)">Go Back</a>
        </td>
    </tr>
</table>
<? }?>
Avatar billede showsource Seniormester
05. oktober 2005 - 09:28 #1
Hvis du lader feltet i DB'en med brugernavn være UNIQUE, vil en insert fejle, og dermed findes brugernavnet allerede
Avatar billede tras Juniormester
05. oktober 2005 - 09:29 #2
??? vis liger hvad du mener...?=???
Avatar billede showsource Seniormester
05. oktober 2005 - 09:29 #3
nåh, fik vist ikke lige læst dit spm. ordentligt! ;O=
Avatar billede tras Juniormester
05. oktober 2005 - 09:29 #4
helt ok
Avatar billede showsource Seniormester
05. oktober 2005 - 09:30 #5
Men du laver vel tjek på om en bruger er logget ind i func.php?
Avatar billede showsource Seniormester
05. oktober 2005 - 09:33 #6
Og er det en includefil, du viser der?
Avatar billede tras Juniormester
05. oktober 2005 - 09:34 #7
Nej for bruger skal ikke være logget ind for at få lavet sit password om vis han glemmer det.

I func er db informationer alså passworld osv....
Avatar billede tras Juniormester
05. oktober 2005 - 09:35 #8
Avatar billede tras Juniormester
05. oktober 2005 - 09:38 #9
Brugernavn = test
code = test
email = test

og please lad det nye  password være test så andre kan teste også ;)
Avatar billede tras Juniormester
05. oktober 2005 - 09:38 #10
og jo test er i databasen
Avatar billede showsource Seniormester
05. oktober 2005 - 09:40 #11
uhh, det lyder jo som om man kan ændre info for en bruger, blot man kender navnet?
Hvor får du $Get->username fra?
Avatar billede tras Juniormester
05. oktober 2005 - 09:41 #12
og "code"
Avatar billede tras Juniormester
05. oktober 2005 - 09:42 #13
Det håbede jeg jeg fik fra databsen alså fra

$query = mysql_query("select `*` from `db_users`
                      where `username`='" . $_POST['username'] . "'") or die (mysql_error());


Men det gør jeg sikkert ikke idet det ikke virker
Avatar billede tras Juniormester
05. oktober 2005 - 09:43 #14
Her før brugt <?=get->username ?> til at hente information fra
<?
    $SQL = "SELECT * FROM host_users WHERE user_name = '" . $_SESSION['logged_name'] . "' LIMIT 1";
    $loadin = mysql_query($SQL) or die("There is an Error in the database");
    while ($Get = mysql_fetch_object($loadin)){
?>

Men det virker ikke i dette tilfælde :(
Avatar billede tras Juniormester
05. oktober 2005 - 09:47 #15
&& $_POST['username'] == ($Brugernavn fra databasen))


Så skulle alle kunne forstå jeg skal finde in måde at sammenline post med bruger fra databasen... men skal jo først kunne hente brugernavn fra databasen HVORDAN???
Avatar billede showsource Seniormester
05. oktober 2005 - 09:49 #16
Et lidt andet forslag: (utestet)

$errors = array();
foreach($_POST as $key => $value) {
    if(trim($value) == "") {
    $errors[] = "Fejl! Feltet med <b>". $key ."<b> er tomt!";
    }
}

if(count($errors) !=0) {
echo implode("<br />\r\n", $errors);
}else{
$newpass = md5($_POST["password"]);
$sql = "UPDATE `db_users` SET `password` = '". $newpass ."' WHERE `email` = '". $_POST["email"] ."' AND `username` = '". $_POST["username"] ."' AND `code` = '". $_POST["code"] ."'";

    if(mysql_query($sql)) {
        if(mysql_affected_rows() == 1) {
        echo"Data er ændret";
        }else{
        echo"Fejl ved opdatering!";
    }else{
    echo"Ups!, ". mysql_error();
    }

Og så bør du tage højde for "sql-injektion" !!!!!
Avatar billede showsource Seniormester
05. oktober 2005 - 09:51 #17
Avatar billede tras Juniormester
05. oktober 2005 - 09:51 #18
øhh det ser skq, undskyld jeg siger det ud som det rene volapyk fra min side af..
Avatar billede tras Juniormester
05. oktober 2005 - 09:52 #19
Alt jeg skulle finde ud af er hvordan jeg får brugernavn fra databasen til at stå
&& $_POST['username'] == ($Brugernavn fra databasen))
og blive sammen linet med det bruger navn men selv har intastet
Avatar billede showsource Seniormester
05. oktober 2005 - 09:56 #20
Du kan jo prøve det af?
Avatar billede tras Juniormester
05. oktober 2005 - 09:57 #21
>.< Skal ikke lave om på min kode... det er alt for meget extra som jeg kan forkorte lige ned til et lille kort ord. vis jeg bare får vist hvordan man henter informationen fra databasen
Avatar billede showsource Seniormester
05. oktober 2005 - 10:02 #22
ja, ok, men der er jo ingen grund til at hente brugernavnet, da det er det row med brugernavn som skal opdateres?

$user = mysql_query("SELECT `username` FROM `db_users` WHERE `username` = '". $_POST["username"] ."' AND `code` = '". $_POST["code"] ."'") or die (mysql_error());

if(mysql_num_rows($user) == 1) {
$bruger = mysql_result($user, 0);
}else{
echo"fejl i brugernavn eller code!";
}

så kan du opdatere hvor username = $bruger
Avatar billede showsource Seniormester
05. oktober 2005 - 10:04 #23
Og nu du skrev volapyk :O)

Først et array ($errors) med evt. fejl.
Hvis optælling af array'et IKKE er nul, så vis hvilke felter som skal udfyldes.
og ellers
udfør en query
og hvis det er et row som opdateres, jamen så er det jo fint!
Avatar billede tras Juniormester
05. oktober 2005 - 10:06 #24
hmm. well du kan få dine points men vil vente til i morgen og se om jeg ikke kan få det lavet på den anden måde. ok'?
Avatar billede showsource Seniormester
05. oktober 2005 - 10:13 #25
point betyder ikke noget, og du får lige en som evt. escaper tegn som ' hentet fra linket til artikel

$errors = array();
foreach($_POST as $key => $value) {
    if(trim($value) == "") {
    $errors[] = "Fejl! Feltet med <b>". $key ."</b> er tomt!";
    }
}

if(count($errors) !=0) {

echo implode("<br />\r\n", $errors);

}else{

function my_addslashes($streng){
  return get_magic_quotes_gpc()?$streng:addslashes($streng);
}

$newpass = md5($_POST["password"]);
$sql = "UPDATE `db_users` SET `password` = '". $newpass ."' WHERE `email` = '". my_addslashes($_POST["email"]) ."' AND `username` = '". my_addslashes($_POST["username"]) ."' AND `code` = '". my_addslashes($_POST["code"]) ."'";

    if(mysql_query($sql)) {
        if(mysql_affected_rows() == 1) {
        echo"Dit password er ændret";
        }else{
        echo"Fejl ved opdatering!";
    }else{
    echo"Ups!, ". mysql_error();
    }

stadig utestet! :O)
Og dine java halløj kan jo bare puttes på.
Avatar billede showsource Seniormester
05. oktober 2005 - 10:14 #26
hmm, og
$newpass = md5($_POST["password"]);

skal nok være

$newpass = md5(stripslashes($_POST["password"]));
Avatar billede tras Juniormester
10. november 2005 - 13:53 #27
...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB