Leaderboard
Popular Content
Showing content with the highest reputation on 08/23/14 in all areas
-
2 points
-
# jsSql Injection # Automated Mysql injection ,Web based tool # Injectii suportate: [+] Union based [+] Error based # Caracteristici Union Based Detectarea automata a keywordului si a tipului de date String/Integer Se foloseste de eroarea "You have a error in your sintax" pentru a obtine numarul de coloane in numai un request Poate numara coloanele cu Order by sau group by Poate numara coloanele direct in union ( union select 1 ; union select 1,2 ; union select 1,2,3; etc...) Poate incerca si JOIN sintax pentru virgula bypass Poate extrage Baze de de date , Tabele, Coloane,Date prin Dump in one shot sau benchmark In cazul in care cele de sus nu merg poate extrage Baze de date ,tabele ,coloane,date cu Limit x,1 Se poate selecta un fisier unde sa faca DUMP Poate citi fisiere prin load_file Se poate executa propria sintaxa SELECT Prin intermediul unei liste cu cele mai comune tabele si coloane poate ghici unele , in cazul in care nu exista information_schema # Caracteristici Error Based Incearca 3 sintaxe diferite ,se poate seta de la setari o a patra sintaxa pentru order by injection Extrage Baze de de date , Tabele, Coloane,Date Se poate selecta un fisier unde sa faca DUMP Prin intermediul unuei liste cu cele mai comune tabele si coloane poate ghici unele ,in cazul in care nu exista information_schema # Alte caracteristici si optiuni: [+] O functie pentru WAF Bypass ce foloseste /*!12345 */ + url encode + + () urlencoded [+] Un admin panel finder cu 10 threaduri [+] %Inject% pentru a indica locul unde sa injecteze ex: site.com/script.php?id=1%Inject%¶metru_non_vulnerabil sau cand trebuie pus ) in fata ex: site.com/script.php?id=1)%Inject%¶metru_non_vulnerabil sau cand este nevoie de " in loc de ' site.com/script.php?id=1"%Inject%¶metru_non_vulnerabil [+] Load_file fuzzer (impreuna cu o lista aflata in fisierul base.js poate ghici fisierele aflate pe server , daca scriptul ruleaza pe un user cu file_priv=Y) Fisiere: index.html base.js s.php s2.php keywords.php admin_p.html1 point
-
No... voiam sa imi bag pula in toti illuminatii... si-n mortii mamii lor( tot cu de I) si imi bag pula-n gramatica voastra aia care ma corecteaza voiam doar sa-mi bag pulan in satana si-n mamele voastre care s-au rugat la Dumnezeo sa iesiti din pizdele alea uscate si in continuare in bag pulan in toti rocari sau cum se scrie nu reclam pe nimeni... doar aici sa vada toata lumea ca ne bagam(aici poate se considera careva) pulan in satana sin rocu vostru... Nu va obositi sa citi: Doar ca eu nu-s fucked up ca aia care asculta rock iluminatii pizdii Cius madfakrs see ya in Africa sper sa primesc si eu un laic inainte de ban sau dupa Vad ca numa illuminati pe aici care stiu sa tipe... thx Elohim see ya at barbeq aaaa da stati asa in pula mea... tot eu primesc ban pe chat pentru ca nu sunt de acord cu cacaturile astea cu rock&illuminati&satana shit???? then sa va iau in pula pe toti... plus ca cacatul ala care cere rdp pe chat sau altul ma strigat in pula mea puiule.. gay shit futuvan beregata de gay satanisti ordinar eu mai batran ca tactu ma bagateas in pizda matii cand stii ce inseamna e46/e30 lemme know and also ascultati muzica de cacat1 point
-
Am facut recent un mic proiect in Java, care exporta anumite date(nume,prenume,sex,telefon,email,limbi straine cunoscute) dintr-un PDF ( in cazul meu un CV de pe Ejobs sau BestJobs) intr-un Excel. De mentionat ca functioneaza doar in cazul CV-urilor downloadate de catre angajator Aveti mai jos codul. Poate este util cuiva. package elance.pdf.cv; import java.awt.Desktop; import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.io.File; import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.prefs.Preferences; import javax.imageio.ImageIO; import javax.swing.Action; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JTextField; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.util.PDFTextStripper; public class win extends javax.swing.JFrame { private Preferences pref = Preferences.userNodeForPackage(getClass()); private Point initialClick; private final String cv0 = "Nici un CV gasit"; private final String cv1 = "1 CV"; private ArrayList<String[]> details_best = new ArrayList<>(); private ArrayList<String[]> details_ejobs = new ArrayList<>(); public win() { super("Aplicatie PDF to Excel"); setResizable(false); setUndecorated(true); setLocation(100, 100); initComponents(); moveUndecoratedFrame(); imageButton(jButton1, "close.png", "close2.png"); imageButton(jButton2, "best2.png", "best3.png"); imageButton(jButton3, "ejobs2.png", "ejobs3.png"); imageButton(jButton4, "loadfolder.png", "loadfolder2.png"); imageButton(jButton5, "loadfolder.png", "loadfolder2.png"); imageButton(jButton6, "openfile.png", "openfile2.png"); imageButton(jButton7, "opencv.png", "opencv2.png"); imageButton(jButton8, "openfile.png", "openfile2.png"); imageButton(jButton9, "opencv.png", "opencv2.png"); imageButton(jButton10, "loadfiles.png", "loadfiles2.png"); imageButton(jButton11, "loadfiles.png", "loadfiles2.png"); jTextField1.setText(pref.get("best", "")); jTextField2.setText(pref.get("ejobs", "")); try { if (jTextField1.getText().length() > 0) { numberOfCVs(jTextField3, jTextField1.getText()); } if (jTextField2.getText().length() > 0) { numberOfCVs(jTextField4, jTextField2.getText()); } } catch (Exception ex) { } } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jPanel1 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); jPanel2 = new javax.swing.JPanel(); jButton2 = new javax.swing.JButton(); jTextField1 = new javax.swing.JTextField(); jButton4 = new javax.swing.JButton(); jTextField3 = new javax.swing.JTextField(); jButton6 = new javax.swing.JButton(); jButton7 = new javax.swing.JButton(); jButton10 = new javax.swing.JButton(); jPanel3 = new javax.swing.JPanel(); jButton3 = new javax.swing.JButton(); jTextField2 = new javax.swing.JTextField(); jButton5 = new javax.swing.JButton(); jTextField4 = new javax.swing.JTextField(); jButton8 = new javax.swing.JButton(); jButton9 = new javax.swing.JButton(); jButton11 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jPanel1.setBackground(new java.awt.Color(255, 255, 255)); jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jButton1.setBackground(new java.awt.Color(255, 255, 255)); jButton1.setBorder(null); jButton1.setMargin(new java.awt.Insets(0, 0, 0, 0)); jButton1.setPreferredSize(new java.awt.Dimension(20, 20)); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jPanel2.setBackground(new java.awt.Color(255, 255, 255)); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("BestJobs")); jButton2.setBorder(null); jButton2.setMargin(new java.awt.Insets(0, 0, 0, 0)); jButton2.setPreferredSize(new java.awt.Dimension(223, 55)); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jTextField1.setEditable(false); jTextField1.setMaximumSize(new java.awt.Dimension(216, 20)); jTextField1.setPreferredSize(new java.awt.Dimension(216, 20)); jButton4.setBackground(new java.awt.Color(255, 255, 255)); jButton4.setBorder(null); jButton4.setMargin(new java.awt.Insets(0, 0, 0, 0)); jButton4.setPreferredSize(new java.awt.Dimension(90, 20)); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); jTextField3.setEditable(false); jTextField3.setBackground(new java.awt.Color(255, 255, 255)); jTextField3.setText("Status"); jButton6.setBackground(new java.awt.Color(255, 255, 255)); jButton6.setBorder(null); jButton6.setMargin(new java.awt.Insets(0, 0, 0, 0)); jButton6.setPreferredSize(new java.awt.Dimension(90, 20)); jButton6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton6ActionPerformed(evt); } }); jButton7.setBackground(new java.awt.Color(255, 255, 255)); jButton7.setBorder(null); jButton7.setMargin(new java.awt.Insets(0, 0, 0, 0)); jButton7.setPreferredSize(new java.awt.Dimension(90, 20)); jButton7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton7ActionPerformed(evt); } }); jButton10.setBackground(new java.awt.Color(255, 255, 255)); jButton10.setBorder(null); jButton10.setMargin(new java.awt.Insets(0, 0, 0, 0)); jButton10.setPreferredSize(new java.awt.Dimension(90, 20)); jButton10.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton10ActionPerformed(evt); } }); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jTextField3) .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jButton6, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton7, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel3.setBackground(new java.awt.Color(255, 255, 255)); jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("EJobs")); jButton3.setBorder(null); jButton3.setMargin(new java.awt.Insets(0, 0, 0, 0)); jButton3.setPreferredSize(new java.awt.Dimension(223, 55)); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jTextField2.setEditable(false); jTextField2.setMaximumSize(new java.awt.Dimension(216, 20)); jTextField2.setPreferredSize(new java.awt.Dimension(216, 20)); jButton5.setBackground(new java.awt.Color(255, 255, 255)); jButton5.setBorder(null); jButton5.setMargin(new java.awt.Insets(0, 0, 0, 0)); jButton5.setPreferredSize(new java.awt.Dimension(90, 20)); jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt); } }); jTextField4.setEditable(false); jTextField4.setBackground(new java.awt.Color(255, 255, 255)); jTextField4.setText("Status"); jButton8.setBackground(new java.awt.Color(255, 255, 255)); jButton8.setBorder(null); jButton8.setMargin(new java.awt.Insets(0, 0, 0, 0)); jButton8.setPreferredSize(new java.awt.Dimension(90, 20)); jButton8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton8ActionPerformed(evt); } }); jButton9.setBackground(new java.awt.Color(255, 255, 255)); jButton9.setBorder(null); jButton9.setMargin(new java.awt.Insets(0, 0, 0, 0)); jButton9.setPreferredSize(new java.awt.Dimension(90, 20)); jButton9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton9ActionPerformed(evt); } }); jButton11.setBackground(new java.awt.Color(255, 255, 255)); jButton11.setBorder(null); jButton11.setMargin(new java.awt.Insets(0, 0, 0, 0)); jButton11.setPreferredSize(new java.awt.Dimension(90, 20)); jButton11.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton11ActionPerformed(evt); } }); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jTextField4) .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jButton5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addComponent(jButton9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(0, 0, Short.MAX_VALUE)) .addComponent(jButton11, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jButton8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) ); pack(); }// </editor-fold>//GEN-END:initComponents private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed System.exit(0); }//GEN-LAST:event_jButton1ActionPerformed private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed String x = loadFolder(); jTextField1.setText(x); pref.put("best", x); numberOfCVs(jTextField3, x); }//GEN-LAST:event_jButton4ActionPerformed private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed String x = loadFolder(); jTextField2.setText(x); pref.put("ejobs", x); numberOfCVs(jTextField4, x); }//GEN-LAST:event_jButton5ActionPerformed private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed details_best.clear(); String folder = jTextField1.getText(); if (folder.length() < 1) { return; } if (jTextField3.getText().equalsIgnoreCase(cv0)) { message("Nici un CV gasit in folderul respectiv"); return; } else { ArrayList<String> files = new ArrayList<>(); if (new File(folder).isDirectory()) { files = getCVsFromFolder(folder); } else { for (String h : folder.split(";")) { files.add(h); } folder = new File(folder.split(";")[0]).getParent().toString(); } for (String f : files) { String nume = ""; String sex = ""; String telefon = ""; String mail = ""; String limbi = ""; String[] det = new String[6]; String x = readPDFasText(f); String[] x2 = x.split("\n"); for (int i = 0; i < x2.length; i++) { // nume = x2[0].replace("\n", ""); // sex = getSex(x2[1]); int indexTelefon=0; if (x2[i].toLowerCase().indexOf("mobil:") == 0) { telefon = getTelefon(x2[i]); indexTelefon=i; } int indexNume=0; for(int j=indexTelefon;j>0;j--){ if(getSex(x2[j]).length()>0){ sex=getSex(x2[j]); indexNume=j; } } if(indexNume>0){ nume = x2[indexNume-1].replace("\n", ""); } if (x2[i].toLowerCase().indexOf("email:") == 0) { mail = getMail(x2[i]); } if (x2[i].toLowerCase().indexOf("limbi straine") == 0) { for (int j = 1; j < x2.length - i; j++) { if (x2[i + j].toLowerCase().indexOf("certificari") == 0) { break; } limbi += x2[i + j].trim() + " "; } } } det[0] = "0"; det[1] = nume.trim(); det[2] = sex.trim(); det[3] = telefon.trim(); det[4] = mail.trim(); det[5] = limbi.trim(); details_best.add(det); } String[][] table = new String[details_best.size() + 1][5]; String[] headers = new String[]{"ID", "Nume", "Sex", "Telefon", "Email", "Limbi straine"}; table[0] = headers; for (int i = 1; i < table.length; i++) { table[i] = details_best.get(i - 1); table[i][0] = i + ""; } // determina celalat fisier String dir = jTextField2.getText(); if (!new File(dir).isDirectory()) { dir = new File(dir.split(";")[0]).getParent().toString(); } String othertable = dir + File.separator + "Candidati Ejobs.xls"; if (new File(othertable).exists()) { verificaDubluri(table, readsheet(othertable)); } try { scriefisier(table, folder + File.separator + "Candidati BestJobs.xls"); jTextField3.setText("fisier pregatit"); } catch (Exception ex) { ex.printStackTrace(); } } }//GEN-LAST:event_jButton2ActionPerformed private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed String dir = jTextField1.getText(); if (!new File(dir).isDirectory()) { dir = new File(dir.split(";")[0]).getParent().toString(); } openFile(dir + File.separator + "Candidati BestJobs.xls"); }//GEN-LAST:event_jButton6ActionPerformed private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed details_ejobs.clear(); String folder = jTextField2.getText(); if (folder.length() < 1) { return; } if (jTextField4.getText().equalsIgnoreCase(cv0)) { message("Nici un CV gasit in folderul respectiv"); return; } else { ArrayList<String> files = new ArrayList<>(); if (new File(folder).isDirectory()) { files = getCVsFromFolder(folder); } else { for (String h : folder.split(";")) { files.add(h); } folder = new File(folder.split(";")[0]).getParent().toString(); } for (String f : files) { String nume = ""; String sex = ""; String telefon = ""; String mail = ""; String limbi = ""; String[] det = new String[6]; String x = readPDFasText(f); String[] x2 = x.split("\n"); for (int i = 0; i < x2.length; i++) { nume = x2[0].replace("\n", ""); sex = getSex_ejobs(x2[3].trim()); if (x2[i].trim().toLowerCase().indexOf("telefon:") == 0) { telefon = getTelefon(x2[i]); } if (x2[i].trim().toLowerCase().indexOf("email") == 0) { mail = getMail_ejobs(x2[i].trim()); } if (x2[i].toLowerCase().indexOf("limbi straine (nivel cunoastere):") >= 0) { for (int j = 1; j < x2.length - i; j++) { if (x2[i + j].trim().toLowerCase().indexOf("abilitati") == 0) { break; } limbi += x2[i + j].trim() + " "; } } } det[0] = "0"; det[1] = nume.trim(); det[2] = sex.trim(); det[3] = telefon.trim(); det[4] = mail.trim(); det[5] = limbi.trim(); details_ejobs.add(det); } String[][] table = new String[details_ejobs.size() + 1][5]; String[] headers = new String[]{"ID", "Nume", "Sex", "Telefon", "Email", "Limbi straine"}; table[0] = headers; for (int i = 1; i < table.length; i++) { table[i] = details_ejobs.get(i - 1); table[i][0] = i + ""; } // determina celalat fisier String dir = jTextField1.getText(); if (!new File(dir).isDirectory()) { dir = new File(dir.split(";")[0]).getParent().toString(); } String othertable = dir + File.separator + "Candidati BestJobs.xls"; if (new File(othertable).exists()) { verificaDubluri(table, readsheet(othertable)); } try { scriefisier(table, folder + File.separator + "Candidati Ejobs.xls"); jTextField4.setText("fisier pregatit"); } catch (Exception ex) { ex.printStackTrace(); } } }//GEN-LAST:event_jButton3ActionPerformed private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed details_best.clear(); String folder = jTextField1.getText(); ArrayList<String> files = new ArrayList<>(); if (new File(folder).isDirectory()) { files = getCVsFromFolder(folder); } else { for (String h : folder.split(";")) { files.add(h); } folder = new File(folder.split(";")[0]).getParent().toString(); } if (folder.length() < 1) { return; } for (String f : files) { String nume = ""; String sex = ""; String telefon = ""; String mail = ""; String limbi = ""; String[] det = new String[6]; String x = readPDFasText(f); String[] x2 = x.split("\n"); for (int i = 0; i < x2.length; i++) { nume = x2[0].replace("\n", ""); sex = getSex(x2[1]); if (x2[i].toLowerCase().indexOf("mobil:") == 0) { telefon = getTelefon(x2[i]); } if (x2[i].toLowerCase().indexOf("email:") == 0) { mail = getMail(x2[i]); } if (x2[i].toLowerCase().indexOf("limbi straine") == 0) { for (int j = 1; j < x2.length - i; j++) { if (x2[i + j].toLowerCase().indexOf("certificari") == 0) { break; } limbi += x2[i + j].trim() + " "; } } } det[0] = "0"; det[1] = nume.trim(); det[2] = sex.trim(); det[3] = telefon.trim(); det[4] = mail.trim(); det[5] = limbi.trim(); details_best.add(det); } int x = -1; if (details_best.size() < 1) { return; } else if (details_best.size() == 1) { openFile(files.get(0)); return; } String t = JOptionPane.showInputDialog(null, "Introdu ID-ul! (intre 1 - " + details_best.size() + ")", ""); try { x = Integer.parseInt(t); x = Math.abs(x); } catch (Exception ex) { } if (x < 0 || x > details_best.size()) { return; } // ArrayList<String> files = getCVsFromFolder(jTextField1.getText()); openFile(files.get(x - 1)); }//GEN-LAST:event_jButton7ActionPerformed private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton9ActionPerformed details_ejobs.clear(); String folder = jTextField2.getText(); if (folder.length() < 1) { return; } ArrayList<String> files = new ArrayList<>(); if (new File(folder).isDirectory()) { files = getCVsFromFolder(folder); } else { for (String h : folder.split(";")) { files.add(h); } folder = new File(folder.split(";")[0]).getParent().toString(); } for (String f : files) { String nume = ""; String sex = ""; String telefon = ""; String mail = ""; String limbi = ""; String[] det = new String[6]; String x = readPDFasText(f); String[] x2 = x.split("\n"); for (int i = 0; i < x2.length; i++) { nume = x2[0].replace("\n", ""); sex = getSex_ejobs(x2[3].trim()); if (x2[i].trim().toLowerCase().indexOf("telefon:") == 0) { telefon = getTelefon(x2[i]); } if (x2[i].trim().toLowerCase().indexOf("email") == 0) { mail = getMail_ejobs(x2[i].trim()); } if (x2[i].toLowerCase().indexOf("limbi straine (nivel cunoastere):") >= 0) { for (int j = 1; j < x2.length - i; j++) { if (x2[i + j].trim().toLowerCase().indexOf("abilitati") == 0) { break; } limbi += x2[i + j].trim() + " "; } } } det[0] = "0"; det[1] = nume.trim(); det[2] = sex.trim(); det[3] = telefon.trim(); det[4] = mail.trim(); det[5] = limbi.trim(); details_ejobs.add(det); } int x = -1; if (details_ejobs.size() < 1) { return; } else if (details_ejobs.size() == 1) { openFile(files.get(0)); return; } String t = JOptionPane.showInputDialog(null, "Introdu ID-ul! (intre 1 - " + details_ejobs.size() + ")", ""); try { x = Integer.parseInt(t); x = Math.abs(x); } catch (Exception ex) { } if (x < 0 || x > details_ejobs.size()) { return; } openFile(files.get(x - 1)); }//GEN-LAST:event_jButton9ActionPerformed private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed String dir = jTextField2.getText(); if (!new File(dir).isDirectory()) { dir = new File(dir.split(";")[0]).getParent().toString(); } openFile(dir + File.separator + "Candidati Ejobs.xls"); }//GEN-LAST:event_jButton8ActionPerformed private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton10ActionPerformed String x = loadfile(); jTextField1.setText(x); String[] files = x.split(";"); if (files.length == 0) { jTextField3.setText(cv0); } else if (files.length == 1) { jTextField3.setText(cv1); } else { jTextField3.setText(files.length + " CV-uri"); } pref.put("best", x); }//GEN-LAST:event_jButton10ActionPerformed private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton11ActionPerformed String x = loadfile(); jTextField2.setText(x); pref.put("ejobs", x); numberOfCVs(jTextField4, x); }//GEN-LAST:event_jButton11ActionPerformed public static void run() { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new win().setVisible(true); } }); } private void moveUndecoratedFrame() { this.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { initialClick = e.getPoint(); getComponentAt(initialClick); } }); this.addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseDragged(MouseEvent e) { // get location of Window int thisX = getLocation().x; int thisY = getLocation().y; // Determine how much the mouse moved since the initial click int xMoved = (thisX + e.getX()) - (thisX + initialClick.x); int yMoved = (thisY + e.getY()) - (thisY + initialClick.y); // Move window to this position int X = thisX + xMoved; int Y = thisY + yMoved; setLocation(X, Y); } }); } private String readPDFasText(String pdfFile) { String result = ""; PDDocument doc; try { // doc = new PDDocument(); doc = PDDocument.load(pdfFile); PDFTextStripper textStripper = new PDFTextStripper(); result = textStripper.getText(doc); doc.close(); } catch (Exception ex) { System.out.println("readPDFasText - " + ex.getMessage()); } // System.out.println(result); return result; } private String loadfile() { JFileChooser choose = new JFileChooser(System.getProperty("user.home") + File.separator + "Desktop"); choose.setMultiSelectionEnabled(true); Action details = choose.getActionMap().get("viewTypeDetails"); details.actionPerformed(null); choose.showOpenDialog(null); File[] files = choose.getSelectedFiles(); String x = ""; if (files.length > 1) { for (File f : files) { x += f.getPath() + ";"; } x = x.substring(0, x.length() - 1); } else { try { x = choose.getSelectedFile().getPath(); } catch (Exception ex) { } } return x; } private static void openurl(String url) { try { Desktop.getDesktop().browse(new URI(url)); } catch (Exception ex) { } } private void openFile(String file) { try { Desktop.getDesktop().open(new File(file)); } catch (Exception ex) { } } private void imageButton(JButton but, String image1, String image2) { try { but.setRolloverIcon(new ImageIcon(ImageIO.read(getClass().getResource("/" + image2)))); but.setRolloverEnabled(true); but.setIcon(new ImageIcon(ImageIO.read(getClass().getResource("/" + image1)))); } catch (Exception ex) { } } public static void scriefisier(String[][] tabel, String nume) throws IOException, WriteException { try { WritableWorkbook wb = Workbook.createWorkbook(new File(nume)); WritableSheet sheet = wb.createSheet("Sheet1", 0); int[] columns = new int[tabel[0].length]; for (int i = 0; i < columns.length; i++) { columns[i] = 5; } for (int i = 0; i < tabel.length; i++) { for (int j = 0; j < tabel[i].length; j++) { sheet.addCell(new Label(j, i, tabel[i][j])); columns[j] = Math.max(columns[j], tabel[i][j].length() + 3); } } for (int i = 0; i < columns.length; i++) { sheet.setColumnView(i, columns[i]); } wb.write(); wb.close(); } catch (Exception ex) { } } private String loadFolder() { JFileChooser choose = new JFileChooser(); choose.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); choose.showOpenDialog(null); String x = ""; try { x = choose.getSelectedFile().getPath(); } catch (Exception ex) { } return x; } private ArrayList<String> getCVsFromFolder(String folder) { // returneaza toate pdfurile din folderul respectiv // asa se poate afla numarul lor si adresa dintr-o singure metoda ArrayList<String> result = new ArrayList<>(); File f = new File(folder); if (f.isDirectory()) { File[] all = f.listFiles(); for (File g : all) { String name = g.toString(); if (name.substring(name.length() - 4).equalsIgnoreCase(".pdf")) { result.add(name); } } } return result; } private void message(String message) { JOptionPane.showMessageDialog(null, message, "", JOptionPane.ERROR_MESSAGE); } private void p(Object t) { System.out.println(t); } private void numberOfCVs(JTextField displayResult, String folder) { ArrayList<String> files = new ArrayList<>(); if (new File(folder).isDirectory()) { files = getCVsFromFolder(folder); } else { for (String h : folder.split(";")) { files.add(h); } folder = new File(folder.split(";")[0]).getParent().toString(); } if (files.size() == 0) { displayResult.setText(cv0); } else if (files.size() == 1) { displayResult.setText(cv1); } else { displayResult.setText(files.size() + " CV-uri"); } } private String getSex(String text) { String result = ""; if (text.indexOf("(") == 0) { text = text.substring(1); if (text.toLowerCase().indexOf("m") == 0/*mascul, masculin*/ || text.toLowerCase().indexOf("b") == 0/*barbat*/) { result = "masculin"; } else if (text.toLowerCase().indexOf("f") == 0) { result = "feminin"; } } return result; } private String getSex_ejobs(String text) { String result = ""; if (text.toLowerCase().indexOf("m") == 0/*mascul, masculin*/ || text.toLowerCase().indexOf("b") == 0/*barbat*/) { result = "masculin"; } else if (text.toLowerCase().indexOf("f") == 0) { result = "feminin"; } return result; } private String getTelefon(String text) { String result = ""; result = text.substring(text.indexOf(":") + 1); return result; } private String getMail(String text) { String result = ""; result = text.substring(text.indexOf(":") + 1); return result; } private String getMail_ejobs(String text) { String result = ""; result = text.substring(text.indexOf(" ") + 1); return result.trim(); } private String[][] readsheet(String file) { //reads the first sheet from an excel file String[][] tt; // the file in table format Workbook workbook; Sheet sheet = null; try { workbook = Workbook.getWorkbook(new File(file)); sheet = workbook.getSheet(0); // 0 is the first sheet } catch (IOException | IndexOutOfBoundsException | BiffException exec) { JOptionPane.showMessageDialog(null, exec, "not working!!", JOptionPane.ERROR_MESSAGE); } int x = sheet.getRows(); int y = sheet.getColumns(); tt = new String[x][y]; for (int i = 0; i < tt.length; i++) { for (int j = 0; j < tt[0].length; j++) { try { tt[i][j] = sheet.getCell(j, i).getContents().toString() + ""; } catch (Exception ex) { } } } return tt; } private void verificaDubluri(String[][] candidatiNoi, String[][] candidatiVechi) { for (int i = 1; i < candidatiNoi.length; i++) { for (int j = 0; j < candidatiVechi.length; j++) { if (candidatiNoi[i][3].equals(candidatiVechi[j][3])) { message("Telefon duplicat pentru candidatul\n" + candidatiNoi[i][1].toUpperCase()); break; } } } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButton1; private javax.swing.JButton jButton10; private javax.swing.JButton jButton11; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6; private javax.swing.JButton jButton7; private javax.swing.JButton jButton8; private javax.swing.JButton jButton9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextField3; private javax.swing.JTextField jTextField4; // End of variables declaration//GEN-END:variables } Sursa aplicatie: FileShare Download Sursa-program-PDF-to-Excel.rar Aplicatia propriu-zisa: FileShare Download Aplicatie PDF to Excel - final.rar1 point
-
Introducere: Eu sunt programator PHP / MYSQL de aproximativ 4 ani, dar mai lucrez si in multe alte limbaje de programare, spre exemplu: Python / Perl / C++ etc... Ca sa ajung unde sunt acum nu a fost foarte greu, dar daca nu ai vointa si nu-ti place domeniul degeaba incerci deoarece nu vei avea rezultate. Primul pas in alegerea unui limbaj de programare este sa te gandesti cu care limbaj de programare te-ai intalnit tu cel mai des, si pe care l-ai inteles cat de cat, ideea este ca majoritatea programatorilor din Romania au invatat programare la facultate, deci nu prea au cunostinte despre cealalta parte a programarii, dar despre asta vom vorbi putin mai tarziu. Imaginatia si creatia trebuie sa domine, bine ar fi sa nu cititi tutoriale de pe internet, ci sa cititi carti despre limbajul ales de dumneavoastra. De ce sa citesti? Foarte simplu, tutorialele te invata ce sa faci doar in cazul ilustrat de autorul tutorialului, dar citind dintr-o carte, cu toate ca sunt notiuni care probabil le stiti, s-au o sa va para plictisitor, intelegi mai bine fenomenele si te ajuta sa-ti creezi tot odata si logica unui programator. Ce inseamna logica unui programator? Logica unui programator este o logica aparte, un programator nu este acela care stie sa foloseasca niste functii intr-un limbaj de programare. Un programator este acela care combina in mod original functii ale limbajului respectiv ca sa formeze o structura functionala. De obicei un potential programator invata functiile, dar dupa ce stii functiile trebuie sa lucrezi la partea gandirii de programator. Se castiga bani din programare? Multa lume fuge de acest domeniu deoarece spune ca este greu, si ca nu se castiga bani din asta. Dar acest lucru este absolut fals In ziua de astazi un programator mediu, care lucreaza pe cont propriu castiga cel putin 10 euro / ora Daca stam sa calculam daca lucrezi 4 ore / zi faci 40 euro, intr-o luna se fac 1200 euro in conditiile in care lucrezi 4 ore/ zi, jumatea programului de lucru normal, plus ca lucrul se face de acasa. Daca se plateste asa de bine, de ce nu se angajeaza toti programatori? Sunt multi programatori, pe multe limbaje de programare, daca stam sa ne gandim estimativ, majoritatea oamenilor care au conturi pe forumuri de securitate / jocuri online / servere etc. Au cunostinte si produc bani din lumea IT-ului. Deci sunt din ce in ce mai muti care si-au mutat locul de munca in fata unui monitor. Ce trebuie sa stiu, inainte sa ma apuc de invat un limbaj de programare In mod normal, trebuie sa aveti baza de cunostinta intr-ale informaticii, dar depinde ce domeniu va alegeti Pentru PERL / Python, eu va recomand sa va obijnuiti cu Linux-ul si cu librariile acestuia, sa explorati si sa invatati ce este un Kernel si tot felul de chitibusuri, deoarece aceste doua limbaje de programare au fost facute pentru Linux, nu pentru Windows, ca se folosesc acum si pentru Windows, este alt ceva. Pentru PHP/MYSQL/ Va recomand sa intelegeti principiile si cum functioneaza un server web, ce are la baza, ce porturi foloseste, ce protocoale foloseste, ca este un pachet de date, care este diferenta intre "UDP si TCP" si tot felul de chitibusuri din astea, ca si sfat, ca sa aveti success in programare, ar trebui sa tociti putin retelistica. Care este baza limbajelor de programare Aceasta intrebare este cam greu de raspuns, baza limbajelor de programare este Assembler, dar acum o parte din limbajele de programare aparute, sunt scrise in C. Daca invat baza unui limbaj de programare, o sa invat mai usor, restul limbajelor ce se trag din baza? Aici este un raspuns cam greu de dat, depinde foarte mult de limbajul de programare ales, din propria experienta PHP-ul l-am invatat mult mai usor, stiind C-ul. Eu spun sa studiati inainte un limbaj de programare, sa aflati care sunt asemanarile si diferentele fata de baza lui. In acest tutorial nu ai spus nimic de "HTML / CSS " desi sunt limbaje web (ceea ce lucrezi tu) Intr-adevar, nu am specificat nimic de aceste "Limbaje de programare" deoarece nu sunt limbaje de programare. HTML: nu este Limbaj de programare, ci Limbaj de marcare. CSS: (Cascading Style Sheets) este doar un standard pentru formarea elementelor intr-un document HTML nimic mai mult JavaScript (JS) este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor. Este folosit mai ales pentru introducerea unor func?ionalit??i în paginile web, codul Javascript din aceste pagini fiind rulat de c?tre browser. Limbajul este binecunoscut pentru folosirea sa în construirea siturilor web, dar este folosit ?i pentru acesul la obiecte încastrate (embedded objects) în alte aplica?ii. Cat de mult conteaza securitatea cand vorbim de programare In domeniul meu, este foarte importanta securitatea, deoarece clientul depinde de mine, pe langa diplomele de programare mai detin si diplomele de la CEH (Certificated Ethical Hacker) aceste studii m-au ajutat sa inteleg mai bine fenomenele greselilor. Cand vorbim despre securitate web vorbim despre vulnerabilitati extrem de periculoase, afectand intreg serverul nu doar scriptul respectiv. Daca am ratat vre-un punct, va rog completi-ma voi.-1 points