Avatar billede iceicepepsi Nybegynder
03. januar 2013 - 21:56 Der er 16 kommentarer og
1 løsning

profil

hvordan laver man en base64 encode? Mit problem er at min kode er bygget op sådan at når en bruger redigere sit password så indsætter den teksten i sql præcis som han indtaster det? Altså den encrypter det ikke og derfor virker det ikke når han så vil logge ind igen.

Koden kan ses nedenfor: 

<?php
session_start();
include("db.php");
if($_REQUEST["Submit"]=="Update")

{
$sql="update users set password ='$_REQUEST [newpassword]' where username='$_SESSION[MNLogin]'";
//echo $sql;
mysql_query($sql);
header("Location:profile.php?msg=updated");
}


?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Change password</TITLE>
<script language="javascript" type="text/javascript">
function validate()
{

var formName=document.frm;

if(formName.newpassword.value == "")
{
document.getElementById("newpassword_label").innerHTML='Please Enter New Password';
formName.newpassword.focus();
return false;
}
else
{
document.getElementById("newpassword_label").innerHTML='';
}


if(formName.cpassword.value == "")
{
document.getElementById("cpassword_label").innerHTML='Enter ConfirmPassword';
formName.cpassword.focus();
return false;
}
else
{
document.getElementById("cpassword_label").innerHTML='';
}


if(formName.newpassword.value != formName.cpassword.value)
{
document.getElementById("cpassword_label").innerHTML='Passwords Missmatch';
formName.cpassword.focus()
return false;
}
else
{
document.getElementById("cpassword_label").innerHTML='';
}
}
</script>
<style type="text/css">
<!--
.style1 {font-weight: bold}
.style7 {
color: yellow;
font-size: 24px;
}
.style9 {
color: #FF6666;
font-weight: bold;
}
.style12 {
color: #666666;
font-weight: bold;
}
.style14 {color: #CC0033; font-weight: bold; }
-->
</style>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
</HEAD>
<BODY>

<form action="profile.php" method="post" name="frm" id="frm" onSubmit="return validate();">
<table width="47%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" align="center"></td>
</tr>
<tr bgcolor="#666666">
<td colspan="2"><span class="style7">Change Password</span></td>
</tr>
<?php if($_REQUEST[msg]=="updated") { ?>
<tr bgcolor="#666666">
<td colspan="2"><span class="style7">Password has been changed successfully.</span></td>
</tr>
<?php } ?>
<tr>
<td bgcolor="#CCCCCC"><span class="style14">username:</span></td>
<td bgcolor="#CCCCCC"><input type="text" name="username" value="<? echo $_SESSION['MNLogin'] ?>" disabled  id="username" size="20" autocomplete="off"/>&nbsp; <label id="newpassword_label" class="level_msg"></td>
</tr>
<tr>
<td bgcolor="#CCCCCC"><span class="style14">email:</span></td>
<td bgcolor="#CCCCCC"><input type="email" name="email" value="" disabled  id="email" size="20" autocomplete="off"/>&nbsp; <label id="newpassword_label" class="level_msg"></td>
</tr>
<tr>
<td bgcolor="#CCCCCC"><span class="style14">New Password:</span></td>
<td bgcolor="#CCCCCC"><input type="password" name="newpassword" id="newpassword" size="20" autocomplete="off"/>&nbsp; <label id="newpassword_label" class="level_msg"></td>
</tr>
<tr>
<td bgcolor="#CCCCCC"><span class="style14">Confirm Password:</span></td>
<td bgcolor="#CCCCCC"><input type="password" name="cpassword" id="cpassword" size="20" autocomplete="off">&nbsp; <label id="cpassword_label" class="level_msg"></td>
</tr>

<tr bgcolor="#666666">
<td colspan="2" align="center"><input type="submit" name="Submit" value="Update" onSubmit="return validate();"/></td>
</tr>

</table>
</form>
</BODY>
</HTML>
  </div>
Avatar billede olsensweb.dk Ekspert
03. januar 2013 - 22:16 #1
har du prøvet at kigge i manualen ?? http://php.net/manual/en/function.base64-encode.php
(utested)
{
$pw = base64_encode ( $_REQUEST ['newpassword'] ); // er du sikker på der ikke skal gnyffer omkring newpassword
$sql="update users set password =`".$pw."` where username='$_SESSION[MNLogin]'";

//echo $sql;
mysql_query($sql);
header("Location:profile.php?msg=updated");
}


nb http://dk.php.net/manual/en/mysqlinfo.api.choosing.php
Recommended API

It is recommended to use either the mysqli or PDO_MySQL extensions. It is not recommended to use the old mysql extension for new development, as it has been deprecated as of PHP 5.5.0 and will be removed in the future.


nbb
ref
</HTML>
</div>
hvad laver den </div> efter html afslutning ??, valider din side
Avatar billede olebole Juniormester
03. januar 2013 - 23:14 #2
<ole>

Hvad angår hashing af passwords, kan jeg anbefale arne_v's nye guide. Til det formål er Base64 helt utilstrækkeligt.

/mvh
</bole>
Avatar billede iceicepepsi Nybegynder
03. januar 2013 - 23:33 #3
tak fik det til at funke  #1 der skulle gnyffer om newpassword jeg hade lige lave en fejl og den </div>  skulle lige slettes
#2 tak for guide den var nyttig
Avatar billede iceicepepsi Nybegynder
03. januar 2013 - 23:43 #4
ronols de kode du skriv de virkede ikke men prøver lige at finde en løsning
Avatar billede arne_v Ekspert
04. januar 2013 - 00:01 #5
base64 er hverken kryptering eller hashing.

Det er en tovejs konvertering mellem tekst data og binaere data.
Avatar billede iceicepepsi Nybegynder
04. januar 2013 - 00:37 #6
ja det ved jeg godt men det er det jeg skal bruge
når jeg går ind på den her side og taster test
så får jeg en kode som jeg sætter ind i mysql så kan jeg logge ind med test som password

http://www.motobit.com/util/base64-decoder-encoder.asp

så skal bruge en kode i mit script som gør det automatisk

lige som den ronols skriv bare en der virker
Avatar billede iceicepepsi Nybegynder
04. januar 2013 - 01:39 #7
jeg fandt løsningen selv men tak for hjælpen
Avatar billede olebole Juniormester
04. januar 2013 - 13:50 #8
Hvad var løsningen?
Avatar billede iceicepepsi Nybegynder
04. januar 2013 - 13:57 #9
{
$_pw = base64_encode ( $_REQUEST ['newpassword'] );
$sql="update users set password ='$_pw' where username='$_SESSION[MNLogin]'";
//echo $sql;
mysql_query($sql);
header("Location:profile.php?msg=updated");
}
Avatar billede olebole Juniormester
04. januar 2013 - 14:12 #10
Det var så ikke lige dig selv, der fandt ud af det. Det var ronols, der viste dig, hvordan du base64 encode'er dit password  =)

Bevares, der var en midre fejl i ronols' SQL - men det var jo ikke det, spørgsmålet gik på.
Avatar billede olsensweb.dk Ekspert
04. januar 2013 - 15:41 #11
hvad er begrundelsen for at bruge $_REQUEST ?? brug enten $_GET eller $_POST. $_REQUEST aflæsser både $_GET og $_POST, og der er sku da usikkert.
til pw må du kun bruge post, hvis du brugte get ville brugerens pw stå i url'en, og det bliver en bruger meget ked af.

du skal validerer alle dine bruger input, ellers gør du din code piv åben for uheldige elementer.
valider input clientside for brugerens skyld
valider input serverside for serverens og din sikerheds skyld, dette punkt må aldrig springes over

>Bevares, der var en midre fejl i ronols' SQL
ja fejlen hedder backtick om variabel, de skal jo anvendes om collonne og tabel navne
Avatar billede arne_v Ekspert
04. januar 2013 - 19:49 #12
de boer aldrig anvendes - man boer vaelge nogle navne som ikke er reserverede
Avatar billede olsensweb.dk Ekspert
04. januar 2013 - 22:05 #13
alt andet lige bør man undgå reseveret ord, og andre uheldige navne/bogstaver (feks by, æøå eller mellemrum) men det skader ikke præventivt at sætte backticket om tabel og kollone navne, så er man sikker på ikke at få problemer med disse ord.
vi ser jo også når phpmyadmin exporterer til en sql fil, er der altid backtick om tabel og kollone navne.
Avatar billede arne_v Ekspert
04. januar 2013 - 22:18 #14
Man er også sikker på at ens SQL er MySQL specifik.
Avatar billede iceicepepsi Nybegynder
04. januar 2013 - 22:23 #15
lukker
Avatar billede olebole Juniormester
04. januar 2013 - 22:38 #16
Undskyld, men var det dig selv, der skulle have de point?
Avatar billede arne_v Ekspert
05. januar 2013 - 00:17 #17
Jeg undrer mig ogsaa.

Spoergsmaalet var "hvordan laver man en base64 encode?".

ronols besvarede det spoergsmaal.
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

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